package com.xpec.c4.message;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.concurrent.ConcurrentHashMap;

import com.xpec.c4.h5net.H5AnnotationStructure;
import com.xpec.c4.h5net.H5DecoderAnnotation.MessageClassName;
import com.xpec.c4.service.server.CloseType;

/**
 * 消息类型，所有版本消息號都共用此份w
 * <p>
 * 采用六位整数 abbccc<br>
 * a 第一位，表示收发方向， <br>
 * client->server,1; <br>
 * server->client,2; <br>
 * server<->client,3; <br>
 * server<->server,4 <br>
 * b 第二位和第三位表示模块名，从00到99 <br>
 * c 第四到第六位表示消息排序，一般从001到999 <br>
 * <br>
 * 合併的時候不要只檢查Variable有沒有重複，請用search檢查代表的數字有沒有重複<br>
 * 
 * @author lipeilin
 */
public class MessageTypes
 {
	public static ConcurrentHashMap<Integer, H5AnnotationStructure> messageMap = new ConcurrentHashMap<Integer, H5AnnotationStructure>();

	static {
		for (Field field : MessageTypes.class.getDeclaredFields()) {
			if (Modifier.isPublic(field.getModifiers())) {
				try {
					Object key = field.get(field.getName());
					field.setAccessible(true);
					if (key instanceof Integer
							&& field.isAnnotationPresent(MessageClassName.class)) {
						MessageClassName messageClassName = field.getAnnotation(MessageClassName.class);
						H5AnnotationStructure structure = new H5AnnotationStructure();
						try {
							String className = messageClassName.className();
							if (!className.equals("")) {
								structure.setRealClass(Class.forName(className));
							}
						} catch (ClassNotFoundException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						structure.setH5Enable(messageClassName.h5Enable());
						messageMap.put((Integer) key, structure);
					}
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
	}

	/**
	 * 封包版本
	 */
	public static short MT_VERSION = 0;

	// ********************************
	// 通訊層，底層使用
	// 或發到主執行緒或其他非module處理的消息
	// ********************************

	/**
	 * 服务器信息发送
	 */
	@MessageClassName(className = "com.xpec.c4.service.group.transportlayer.GroupMember")
	public static final int SEND_SERVER_INFO = 100;

	/**
	 * session状态信息
	 * 
	 * @see com.xpec.c4.service.module.SessionStatusMessage
	 */
	// public static final int SESSION_STATUS_INFO = 101;

	/**
	 * User Context改变
	 */
	@MessageClassName(className = "com.xpec.c4.message.ContextStatus")
	public static final int USERID_SESSIONID_SYNCHRO = 102;

	/**
	 * SessionContext改变
	 */
	@MessageClassName(className = "com.xpec.c4.message.ContextStatus")
	public static final int SESSION_CONTEXT_CHANGE = 103;

	/**
	 * Session关闭請求
	 * 
	 * @see com.xpec.c4.service.group.transportlayer.SessionCloseNotify
	 */
	@MessageClassName(className = "com.xpec.c4.service.group.transportlayer.SessionCloseNotify")
	public static final int SESSION_CLOSE = 104;

	/**
	 * 同步呼叫回傳訊息
	 */
	@MessageClassName(className = "java.lang.Object")
	public static final int SYNC_RETURN = 105;

	/**
	 * Server即将关闭
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int SERVER_ABOUT_TO_CLOSE = 106;

	/**
	 * 
	 */
	@MessageClassName(className = "com.ms.service.telnet.STelnetCmdResult")
	public static final int TELNET_MANAGER = 107;

	/**
	 * 訊息執行發生錯誤
	 */
	@MessageClassName(className = "com.ms.game.common.message.MoudleProcessErrorResponse")
	public static final int MSG_PROCESS_ERROR = 108;

	/**
	 * zone 傳 debug cmd to Module
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.LobbyDebugCmdToModuleRequest")
	public static final int DEBUG_CMDTOMODULE = 109;

	// ********************************
	// 系統使用,00
	// ********************************
	/**
	 * 
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int S_SERVER_TEST_REQUEST = 400001;

	/**
	 * 
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int S_SERVER_TEST_RESPONSE = 400002;
	
	/**
	 * 同步資訊給同個vm下各module的消息<br>
	 * server->server<br>
	 * registerH2oClass(52,com.xpec.c4.service.group.transportlayer.SyncModuleInfosMessage.class);
	 */
	@MessageClassName(className = "com.xpec.c4.service.group.transportlayer.SyncModuleInfosMessage")
	public static final int S_SERVER_SYNC_INFOS = 400003;
	
	/**
	 * client取得共用設定<br>
	 * client->server
	 */
	@MessageClassName(className = "")
	public static final int C_GET_COMMON_SETTINGS_REQUEST = 100004;
	
	/**
	 * 回覆共用設定內容<br>
	 * server->client<br>
	 * registerH2oClass(53,com.xpec.c4.service.commonsettings.SUpdateCommonSettingsMessage.class);
	 */
	@MessageClassName(className = "com.ms.service.module.commonsettings.SUpdateCommonSettingsMessage")
	public static final int S_GET_COMMON_SETTINGS_RESPONSE = 200004;
	
	/**
	 * server主動更新共用設定內容<br>
	 * server->client<br>
	 * registerH2oClass(53,com.xpec.c4.service.commonsettings.SUpdateCommonSettingsMessage.class);
	 */
	@MessageClassName(className = "com.ms.service.module.commonsettings.SUpdateCommonSettingsMessage")
	public static final int S_UPDATE_COMMON_SETTINGS_TO_CLIENTS = 200005;
	
	/**
	 * server更新給server共用設定<br>
	 * server->server<br>
	 * registerH2oClass(54,com.xpec.c4.service.commonsettings.CommonSettings.class);
	 */
	@MessageClassName(className = "com.ms.service.module.commonsettings.CommonSettings")
	public static final int S_UPDATE_COMMON_SETTINGS_TO_SERVERS = 400005;

	// ********************************
	// 登录Server请求,01
	// ********************************

	/**
	 * 登录模块消息返回。<br>
	 * server->client<br>
	 * registerH2oClass(116, com.xpec.c4.message.login.SAccountMessageData.class); 
	 */
	@MessageClassName(className = "com.xpec.c4.message.login.SAccountMessageData")
	public static final int S_ACCOUNT_MESSAGE = 201001;

	/**
	 * 创建角色回應, 提供guid給CLient可以做直接登入動作<br>
	 * Server->client<br>
	 */
	@MessageClassName(className = "com.xpec.c4.game.utility.GUID")
	public static final int S_ACCOUNT_CHARACTER_CREATE_SUCCESS = 201005;

	/**
	 * 账户登录请求。<br>
	 * client->server<br>
	 * client:
	 * registerH2oClass(105,com.xpec.c4.message.login.CAccountLoginRequest
	 * .class);<br>
	 * robot: registerH2oClass(106,com.xpec.c4.message.login.
	 * CAccountRobotLoginRequest.class);
	 * 
	 * @see com.xpec.c4.net.XSENetNettyServer
	 * @see com.xpec.c4.net.XSENetLoginVerifHandler
	 */
	@MessageClassName(className = "com.xpec.c4.message.login.CAccountLoginRequest")
	public static final int C_ACCOUNT_LOGIN_REQUEST = 101002;

	/**
	 * 將帳號登入資料送給 login module 驗證<br>
	 * gateway->login<br>
	 * 
	 * @see com.xpec.c4.message.login.SAccountLoginRequest
	 */
	@MessageClassName(className = "com.xpec.c4.message.login.SAccountLoginRequest")
	public static final int S_ACCOUNT_LOGIN_REQUEST = 501002;

	/**
	 * 通知 login module 重新載入 db 中的角色名稱過濾字<br>
	 * gateway->login<br>
	 * long, current time (ms)
	 */
	@MessageClassName(className = "java.lang.Long")
	public static final int S_LOGIN_RELOAD_DB_PLAYER_NAME_FILTER = 401003;

	/**
	 * 創建角色請求<br>
	 * client->server<br>
	 * 
	 * @see com.xpec.c4.message.login.CAccountCharacterCreateRequest
	 */
	@MessageClassName(className = "com.xpec.c4.message.login.CAccountCharacterCreateRequest")
	public static final int C_ACCOUNT_CHARACTER_CREATE_REQUEST = 101005;

	/**
	 * 角色登入請求<br>
	 * client->server<br>
	 * 
	 * @see com.xpec.c4.message.login.CAccountCharacterLoginRequest
	 */
	@MessageClassName(className = "com.xpec.c4.message.login.CAccountCharacterLoginRequest")
	public static final int C_ACCOUNT_CHARACTER_LOGIN_REQUEST = 101007;

	/**
	 * 角色登入請求返回<br>
	 * server->client<br>
	 * 
	 * @see com.xpec.c4.message.login.SAccountCharacterLoginResponse
	 */
	@MessageClassName(className = "com.xpec.c4.message.login.SAccountCharacterLoginResponse")
	public static final int S_ACCOUNT_CHARACTER_LOGIN_RESPONSE = 201007;

	/**
	 * Gateway負載資訊。<br>
	 * gateway->account<br>
	 * 
	 * @see com.xpec.c4.service.module.gateway.CGatewayLoadingInfo
	 */
	@MessageClassName(className = "com.xpec.c4.service.module.gateway.CGatewayLoadingInfo")
	public static final int S_ACCOUNT_GATEWAY_LOADINGINFO = 201014;

	/**
	 * 沒地方用到 login 時發現自己被鎖了, 想要來問問看鎖住的zone是否可以解鎖 request
	 */
	@Deprecated
	public static final int S_ACCOUNT_UNLOCK_QUERY_REQUEST = 401020;

	/**
	 * 沒地方用到 透過zone來角色登录请求<br>
	 * server->server
	 * 
	 * @see int
	 * @see com.xpec.c4.message.login.SCharacterLoginByZoneRequest
	 */
	@Deprecated
	public static final int S_ACCOUNT_CHARACTER_LOGIN_BY_ZONE_REQUEST = 401023;

	/**
	 * 沒地方用到 玩家衝直狀態變更, 請account通知client<br>
	 * account -> login<br>
	 */
	@Deprecated
	public static final int S_ACCOUNT_BIZLIST_UPDATE = 401028;

	/**
	 * 沒地方用到 玩家踢線處理, 請login幫忙處理<br>
	 * account -> login<br>
	 */
	@Deprecated
	public static final int S_ACCOUNT_KICK_PLAYER_REQUEST = 401029;

	/**
	 * 玩家踢線處理, 請login幫忙處理回應<br>
	 * login -> account<br>
	 * 
	 * @see com.ms.service.module.account.message.SKickPlayerMessage
	 */
	@MessageClassName(className = "com.ms.service.module.account.message.SKickPlayerMessage")
	public static final int S_ACCOUNT_KICK_PLAYER_RESPONSE = 401030;

	/**
	 * 每次帳號登入時會發送一組隨機token給予client存在cookie, 可以藉由此來昨直接的重連<br>
	 * server->client<br>
	 * 
	 * @see com.xpec.c4.message.login.SAccountLoginTokenInfo
	 */
	@MessageClassName(className = "com.xpec.c4.message.login.SAccountLoginTokenInfo")
	public static final int S_ACCOUNT_LOGIN_RANDOM_TOKEN = 201032;

	/**
	 * 每個Module自行實作<br>
	 * server->server
	 * 
	 * @see com.xpec.c4.service.telnet.STelnetCmd
	 */
	@MessageClassName(className = "com.ms.service.telnet.STelnetCmd")
	public static final int S_TELNET_COMMAND = 401034;

	/**
	 * 角色列表请求<br>
	 * client->server<br>
	 * null
	 */
	@MessageClassName(className = "")
	public static final int C_ACCOUNT_CHARACTER_LIST_REQUEST = 101003;

	/**
	 * 角色列表请求返回<br>
	 * server->client<br>
	 * 
	 * @see com.xpec.c4.message.login.SAccountCharacterListResponse
	 */
	@MessageClassName(className = "com.xpec.c4.message.login.SAccountCharacterListResponse")
	public static final int S_ACCOUNT_CHARACTER_LIST_RESPONSE = 201004;

	/**
	 * 獲取玩家列表後要求登入<br>
	 * 設定gateway上session的狀態<br>
	 * server->server
	 * 
	 * @see com.xpec.c4.service.module.gateway.SetSessionStatus
	 */
	@MessageClassName(className = "com.xpec.c4.service.module.gateway.SetSessionStatus")
	public static final int S_SET_GATEWAY_SESSION = 401035;

	/**
	 * 獲取玩家列表後要求登入<br>
	 * 設定h5gateway上session的狀態<br>
	 * server->server
	 * 
	 * @see com.xpec.c4.service.module.gateway.H5SetSessionStatus
	 */
	@MessageClassName(className = "com.xpec.c4.service.module.h5gateway.H5SetSessionStatus")
	public static final int S_SET_H5GATEWAY_SESSION = 401039;

	/**
	 * 通知 client 被 server 斷線<br>
	 * server->client<br>
	 * int 斷線類型 {@link CloseType}
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int S_ACCOUNT_CHARACTER_KICK_BY_SERVER = 201037;

	/**
	 * 通知 login module server 開好了<br>
	 * 為什麼要特別通知 login module ? 因為他是一定要存在的 module，用他來接收 server 開好的通知，再顯示到 console
	 * log 中，做為視覺上明顯判斷 server 開好的依據。<br>
	 * server->server
	 */
	@MessageClassName(className = "com.xpec.c4.service.group.transportlayer.GroupMessage")
	public static final int S_ACCOUNT_SERVER_READY_NOTIFY = 401038;

	/**
	 * 小樂創角消息 server->server<br>
	 * 
	 * @see com.xpec.c4.message.login.CAccountCharacterCreateRequest
	 */
	@MessageClassName(className = "com.xpec.c4.message.login.CAccountCharacterCreateRequest")
	public static final int S_ROBORT_CHARACTER_CREATE_REQUEST = 101039;

	/**
	 * 回覆 client 儲值後的 Cash 跟 Value 如果他在儲值頁面的話<br>
	 * server->client<br>
	 * registerH2oClass(3000,com.ms.service.module.account.message.
	 * SAccountCashBonusMessage.class);
	 */
	@MessageClassName(className = "")
	public static final int S_UPDATE_RECHARGE_CASH_BONUS_RESPONSE = 201041;

	/**
	 * 角色登入後通知所有的 module<br>
	 * server->server<br>
	 * login->all module<br>
	 * registerH2oClass(9825,
	 * com.ms.service.module.account.message.SCharacterLoginNotify.class);
	 */
	@MessageClassName(className = "com.ms.service.module.account.message.SCharacterLoginNotify")
	public static final int S_ACCOUNT_CHARACTER_LOGIN_NOTIFY = 401042;
	
	/**
	 * client要求更新鎖定角色及deviceToken<br>
	 * client->server<br>
	 * registerH2oClass(114,com.xpec.c4.message.login.CUpdateLastLockPlayerAndDeviceTokenRequest.class);
	 */
	@MessageClassName(className = "com.xpec.c4.message.login.CUpdateLastLockPlayerAndDeviceTokenRequest")
	public static final int C_UPDATE_LOCK_PLAYER_AND_DEVICE_TOKEN_REQUEST = 101043;
	
	/**
	 * 回覆更新鎖定角色與deviceToken結果<br>
	 * server->client<br>
	 * registerH2oClass(115,com.xpec.c4.message.login.SUpdateLastLockPlayerAndDeviceTokenResponse.class);
	 */
	@MessageClassName(className = "com.xpec.c4.message.login.SUpdateLastLockPlayerAndDeviceTokenResponse")
	public static final int S_UPDATA_LOCK_PLAYER_AND_DEVICE_TOKEN_RESPONSE = 201043;

	// ********************************
	// 大廳, 02 game lobby
	// ********************************

	/**
	 * client 要求改變角色名稱<br>
	 * client->server String 新的名稱
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int C_LOBBY_CHANGE_NAME_REQUEST = 102001;

	/**
	 * server 回傳改變角色名稱的結果<br>
	 * server->client<br>
	 * int 結果代碼
	 * 
	 * @see com.xpec.c4.game.login.LoginModule#characterNameVerify(String,String)
	 * @see com.ms.game.lobby.GameLobbyHandle#handleChangeNameRequest(com.ms.player.Player,
	 *      String)
	 * @see com.ms.game.lobby.GameLobbyHandle#onChangeNameUpdatePlayerDataToDCCallback(Boolean,
	 *      com.xpec.c4.game.utility.GUID)
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int S_LOBBY_CHANGE_NAME_RESPONSE = 202002;

	/**
	 * server 通知 client 有人中獎<br>
	 * server->client<br>
	 * 
	 * @see com.ms.game.lobby.message.SJackpotNotify
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.SJackpotNotify")
	public static final int S_LOBBY_JACKPOT_NOTIFY = 202005;

	/**
	 * 請求大廳遊戲列表資訊 client->server<br>
	 * 無需資料
	 */
	@MessageClassName(className = "")
	public static final int C_LOBBY_HALLTYPELIST_REQUEST = 102003;

	/**
	 * 回覆大廳遊戲列表資訊 server->client<br>
	 * registerH2oClass(205,com.ms.game.lobby.message.SLobbyHallListResponse.class);
	 * registerH2oClass(1100,com.ms.game.lobby.message.GameActivitySettings.class);
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.SLobbyHallListResponse")
	public static final int S_LOBBY_HALLTYPELIST_RESPONSE = 202004;

	/**
	 * 定時廣播滿貫各館JP金額 server->client<br>
	 * 
	 * @see registerH2oClass(305,com.ms.game.lobby.message.
	 *      SGameJackPotBrocastResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.SGameJackPotBrocastResponse")
	public static final int S_LOBBY_GAME_JACKPOT_MONEY = 202006;
	

	/**
	 * client 領取自動回復幸運金的要求<br>
	 * client->server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_LOBBY_GET_AUTO_RECOVER_LUCKY_COIN_REQUEST = 102007;

	/**
	 * 回覆 client 領取自動回復幸運金的結果<br>
	 * server->client<br>
	 * registerH2oClass(322,
	 * com.ms.game.lobby.message.SGetAutoRecoverLuckyCoinResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.SGetAutoRecoverLuckyCoinResponse")
	public static final int S_LOBBY_GET_AUTO_RECOVER_LUCKY_COIN_RESPONSE = 202008;
	
	
	/**
	 * GMTOOL 請 game lobby 重新載入 HALLTYPELIST
	 * server->client<br>
	 * String resultKey
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int S_LOBBY_UPDATE_HALLTYPELIST = 402009;
	
	/**
	 * 忘記密碼請求手機驗證碼
	 * client->server<br>
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankRequest")
	public static final int C_SEND_FORGOTTEN_PASSWORD_NEWSLETTER_REQUEST = 102031;
	
	/**
	 * 	廣播遊戲列表給在大廳的Client
	 *  server->client<br>
	 *  registerH2oClass(205,com.ms.game.lobby.message.SLobbyHallListResponse.class);
	 *  registerH2oClass(1100,com.ms.game.lobby.message.GameActivitySettings.class);
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.SLobbyHallListResponse")
	public static final int S_LOBBY_BROADCAST_HALLTYPELIST_RESPONSE = 202032;

	// ********************************
	// 大廳, 02 game lobby
	// 寄送禮物功能 10
	// ********************************

	/**
	 * 發送禮物第一步驟請求 client->server<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftRequest
	 * @see H2O - 210
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftRequest")
	public static final int C_GIFT_FIRST_SEND_REQUEST = 102010;

	/**
	 * 發送禮物第一步驟回覆 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftResponse
	 * @see H2O - 211
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftResponse")
	public static final int S_GIFT_FIRST_SEND_RESPONSE = 202010;

	/**
	 * 發送禮物第一步驟告知對方 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftNotifyMessage")
	public static final int S_GIFT_FIRST_NOTIFY_TARGET_RESPONSE = 202011;

	/**
	 * 發送禮物第二步驟是否接受請求 client->server<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftRequest
	 * @see H2O - 210
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftRequest")
	public static final int C_GIFT_SECOND_ACCEPT_REQUEST = 102012;

	/**
	 * 發送禮物第二步驟是否接受回覆 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftResponse
	 * @see H2O - 211
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftResponse")
	public static final int S_GIFT_SECOND_ACCEPT_RESPONSE = 202012;

	/**
	 * 發送禮物第二步驟 同意或者不接受 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftNotifyMessage")
	public static final int S_GIFT_SECOND_RETURN_RESPONSE = 202013;

	/**
	 * 發送禮物第三步驟送出禮物請求 client->server<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftRequest
	 * @see H2O - 210
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftRequest")
	public static final int C_GIFT_FINIAL_GIVE_REQUEST = 102014;

	/**
	 * 發送禮物第三步驟送出禮物回覆 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftResponse
	 * @see H2O - 211
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftResponse")
	public static final int S_GIFT_FINIAL_GIVE_RESPONSE = 202014;

	/**
	 * 發送禮物 第三步驟 送方確認 同意或者不接受 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftNotifyMessage")
	public static final int S_GIFT_FINIAL_RETURN_RESPONSE = 202015;

	/**
	 * 獲取所有通知請求 (跟自己有關未完成的寄送禮物交易)<br>
	 * client->server<br>
	 * 無需資料
	 */
	@MessageClassName(className = "")
	public static final int C_GIFT_GET_ALL_NOTIFY_REQUEST = 102016;

	/**
	 * 獲取所有通知回覆 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftAllNotifyResponse
	 * @see H2O - 213
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftAllNotifyResponse")
	public static final int S_GIFT_GET_ALL_NOTIFY_RESPONSE = 202016;

	/**
	 * 獲取記錄請求 client->server<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftRequest
	 * @see H2O - 210
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftRequest")
	public static final int C_GIFT_GET_RECORD_REQUEST = 102017;

	/**
	 * 獲取記錄回覆 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftAllNotifyResponse
	 * @see H2O - 213
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftAllNotifyResponse")
	public static final int S_GIFT_GET_RECORD_RESPONSE = 202017;

	/**
	 * 獲取記錄內容請求 client->server<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftRequest
	 * @see H2O - 210
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftRequest")
	public static final int C_GIFT_GET_RECORD_DETAIL_REQUEST = 102018;

	/**
	 * 獲取記錄內容回覆 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftAllNotifyResponse
	 * @see H2O - 214
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftAllNotifyResponse")
	public static final int S_GIFT_GET_RECORD_DETAIL_RESPONSE = 202018;

	/**
	 * 更新TimeOut退錢請求 client->server<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftRequest
	 * @see H2O - 210
	 */
	@MessageClassName(className = "")
	public static final int C_GIFT_CHECK_TIME_OUT_REQUEST = 102019;

	/**
	 * 更新TimeOut退錢回覆 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftResponse
	 * @see H2O - 211
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftResponse")
	public static final int S_GIFT_CHECK_TIME_OUT_RESPONSE = 202019;

	/**
	 * 發送禮物第一步驟主動取消請求 client->server<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftRequest
	 * @see H2O - 210
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftRequest")
	public static final int C_GIFT_FIRST_CANCEL_REQUEST = 102020;

	/**
	 * 發送禮物第一步驟主動取消回覆 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftResponse
	 * @see H2O - 211
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftResponse")
	public static final int S_GIFT_FIRST_CANCEL_RESPONSE = 202020;

	/**
	 * 發送禮物第一步驟主動取消 通知對方 server->client<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftNotifyMessage")
	public static final int S_GIFT_FIRST_CANCEL_RETURN_RESPONSE = 202021;
	
	
	/**
	 * 送方 領取被拒絕而退回的交易<br>
	 * client->server<br>
	 * 
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftRequest")
	public static final int C_GIFT_GET_REJECTED_ORDER_REQUEST = 102022;
	
	
	/**
	 * 送方 領取被拒絕而退回的交易 回覆<br> 
	 * server->client<br>
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftResponse")
	public static final int S_GIFT_GET_REJECTED_ORDER_RESPONSE = 202022;

	/**
	 * 收方 領取送方送出的交易 <br> 
	 * client->server<br>
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftRequest")
	public static final int C_GIFT_FINAL_TAKEN_REQUEST = 102023;
	
	/**
	 * 收方 領取送方送出的交易 回覆 <br> 
	 * server->client<br>
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftResponse")
	public static final int S_GIFT_FINAL_TAKEN_RESPONSE = 202023;
	
	/**
	 * 送方 領取逾時退回的交易  <br> 
	 * client->server<br>
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftRequest")
	public static final int C_GIFT_GET_TIMEOUT_ORDER_REQUEST = 102024;
	
	/**
	 * 送方 領取逾時退回的交易 回覆 <br> 
	 * server->client<br>
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftResponse")
	public static final int S_GIFT_GET_TIME_OUT_ORDER_RESPONSE = 202024;
	
	/**
	 * 領取被GM 退回的交易  <br> 
	 * client->server<br>
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftRequest")
	public static final int C_GIFT_GET_GMTOOL_RETURN_ORDER_REQUEST = 102025;
	
	/**
	 * 領取被GM 退回的交易 回覆 <br> 
	 * server->client<br>
	 * @see com.ms.game.sendgift.message.SendGiftNotifyMessage
	 * @see H2O - 212
	 */
	@MessageClassName(className = "com.ms.game.sendgift.message.SendGiftResponse")
	public static final int S_GIFT_GET_GMTOOL_RETURN_ORDER_RESPONSE = 202025;
	
	// ********************************
	// 大廳, 02 game lobby
	// 銀行功能 40
	// ********************************

	/**
	 * 銀行存款請求 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankRequest
	 * @see H2O - 240
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankRequest")
	public static final int C_BANK_DEPOSIT_REQUEST = 102040;

	/**
	 * 銀行存款回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see H2O - 241
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankResponse")
	public static final int S_BANK_DEPOSIT_RESPONSE = 202040;

	/**
	 * 銀行提款請求 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankRequest
	 * @see H2O - 240
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankRequest")
	public static final int C_BANK_GET_CASH_REQUEST = 102041;

	/**
	 * 銀行提款回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see H2O - 241
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankResponse")
	public static final int S_BANK_GET_CASH_RESPONSE = 202041;

	/**
	 * 銀行換密碼請求 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankRequest
	 * @see H2O - 240
	 */
	@Deprecated
	@MessageClassName(className = "com.ms.game.bank.message.BankRequest")
	public static final int C_BANK_CHANGE_PASSWORD_REQUEST = 102042;

	/**
	 * 銀行換密碼回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see H2O - 241
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankResponse")
	public static final int S_BANK_CHANGE_PASSWORD_RESPONSE = 202042;

	/**
	 * 銀行新建立密碼請求 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankRequest
	 * @see H2O - 240
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankRequest")
	public static final int C_BANK_CREATE_PASSWORD_REQUEST = 102043;

	/**
	 * 銀行新建立密碼回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see H2O - 241
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankResponse")
	public static final int S_BANK_CREATE_PASSWORD_RESPONSE = 202043;

	/**
	 * 銀行點數轉金錢請求 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankRequest
	 * @see H2O - 240
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankRequest")
	public static final int C_BANK_CHANGE_POINT_TO_GOLD_REQUEST = 102044;

	/**
	 * 銀行點數轉金錢回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see H2O - 241
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankResponse")
	public static final int S_BANK_CHANGE_POINT_TO_GOLD_RESPONSE = 202044;

	/**
	 * 銀行包月請求 server->client<br>
	 * 
	 */
	@MessageClassName(className = "")
	public static final int C_BANK_MONTHLY_FEE_REQUEST = 102045;

	/**
	 * 銀行包月回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see H2O - 241
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankResponse")
	public static final int S_BANK_MONTHLY_FEE_RESPONSE = 202045;

	/**
	 * 銀行包週請求 server->client<br>
	 * 
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankBuyFeeRequest")
	public static final int C_BANK_BUY_FEE_REQUEST = 102052;

	/**
	 * 銀行包週回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see H2O - 241
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankBuyFeeResponse")
	public static final int S_BANK_BUY_FEE_RESPONSE = 202053;

	/**
	 * 帳號點數轉玩家請求 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankRequest
	 * @see H2O - 240
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankRequest")
	public static final int C_BANK_ADD_CASH_ACCOUNT_TO_PLAYER_REQUEST = 102046;

	/**
	 * 帳號點數轉玩家回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see H2O - 241
	 */
	@MessageClassName(className = "")
	public static final int S_BANK_ADD_CASH_ACCOUNT_TO_PLAYER_RESPONSE = 202046;

	/**
	 * 目前沒用 包月每日獎勵請求 server->client<br>
	 * 
	 */
	@MessageClassName(className = "")
	public static final int C_BANK_MONTHLY_DAILY_AWARD_REQUEST = 102047;

	/**
	 * 目前沒用 包月每日獎勵回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see H2O - 241
	 */
	@MessageClassName(className = "")
	public static final int S_BANK_MONTHLY_DAILY_AWARD_RESPONSE = 202047;

	/**
	 * 銀行資訊請求 server->client<br>
	 * 
	 */
	@MessageClassName(className = "java.lang.Boolean")
	public static final int C_BANK_INFO_REQUEST = 102048;

	/**
	 * 銀行資訊回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.SBankPageResponse
	 * @see H2O - 245
	 */
	@MessageClassName(className = "com.ms.game.bank.message.SBankPageResponse")
	public static final int S_BANK_INFO_RESPONSE = 202048;

	/**
	 * 在大廳中銀行新建立密碼請求 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankRequest
	 * @see H2O - 240
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankRequest")
	public static final int C_BANK_CREATE_PASSWORD_INLOBBY_REQUEST = 102049;

	/**
	 * 在大廳中銀行新建立密碼回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see H2O - 241
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankResponse")
	public static final int S_BANK_CREATE_PASSWORD_INLOBBY_RESPONSE = 202049;

	/**
	 * 在大廳中銀行換密碼請求 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankRequest
	 * @see H2O - 240
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankRequest")
	public static final int C_BANK_CHANGE_PASSWORD_INLOBBY_REQUEST = 102050;

	/**
	 * 在大廳中銀行換密碼回覆 server->client<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see H2O - 241
	 */
	@MessageClassName(className = "com.ms.game.bank.message.BankResponse")
	public static final int S_BANK_CHANGE_PASSWORD_INLOBBY_RESPONSE = 202050;

	/**
	 * 確認玩家離線保留資料 client->server<br>
	 * 
	 * @see NULL
	 */
	@MessageClassName(className = "")
	public static final int C_PLAYER_CHECK_OFFLINEKEEPDATA_REQUEST = 102051;

	/**
	 * 確認玩家離線保留資料 server->client<br>
	 * 
	 * @see registerH2oClass(316
	 *      ,com.ms.game.lobby.message.SPlayerCheckOfflineKeepDataResponse
	 *      .class)
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.SPlayerCheckOfflineKeepDataResponse")
	public static final int S_PLAYER_CHECK_OFFLINEKEEPDATA_RESPONSE = 202052;

	/**
	 * 更新玩家離線保留資料 server->server<br>
	 * 
	 * @see com.ms.game.bank.message.BankRequest
	 * @see registerH2oClass(317 ,
	 *      com.ms.game.lobby.message.CPlayerModifyOfflineKeepDataRequest.class)
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.CPlayerModifyOfflineKeepDataRequest")
	public static final int C_PLAYER_MODIFY_OFFLINEKEEPDATA_REQUEST = 102053;

	/**
	 * 更新玩家離線保留資料 server->server<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see registerH2oClass(318
	 *      ,com.ms.game.lobby.message.SPlayerModifyOfflineKeepDataResponse
	 *      .class)
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.SPlayerModifyOfflineKeepDataResponse")
	public static final int S_PLAYER_MODIFY_OFFLINEKEEPDATA_RESPONSE = 202054;

	/**
	 * doorman更新玩家離線保留資料 server->server<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see registerH2oClass(8048,com.ms.game.mgdh.message.
	 *      SDoorManCancelOfflineKeepDataRequest.class);
	 */
	@MessageClassName(className = "")
	public static final int S_DOORMAN_MODIFY_OFFLINEKEEPDATA = 202055;

	/**
	 * doorman更新玩家離線保留資料 server->server<br>
	 * 
	 * @see com.ms.game.bank.message.BankResponse
	 * @see registerH2oClass(8049,com.ms.game.mgdh.message.
	 *      SDoorManCancelOfflineKeepDataBackRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.mgdh.message.SDoorManCancelOfflineKeepDataBackRequest")
	public static final int S_DOORMAN_MODIFY_OFFLINEKEEPDATA_BACK = 202056;

	/*
	 * 取得每日獎勵資訊 client->server<br>
	 */
	@MessageClassName(className = "com.xpec.c4.game.utility.GUID")
	public static final int C_CONTINUE_REWARD = 102057;

	/*
	 * 回覆 client 每日獎勵內容 server->client<br>
	 * 
	 * @see registerH2oClass(323,
	 * com.ms.game.lobby.message.ContinuiusRewardInfo.class)
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.ContinuiusRewardInfo")
	public static final int S_CONTINUE_REWARD = 202057;
	/*
	 * 領取每日獎勵 client->server<br>
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int C_GET_CONTINUE_REWARD = 102058;

	/*
	 * 回覆 client 領取每日獎勵結果 server->client<br>
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int S_GET_CONTINUE_REWARD = 202058;

	/**
	 * 告知client 首次轉點後跳出每日獎勵 server->client<br>
	 */
	@MessageClassName(className = "")
	public static final int S_FIRST_STORE_NOTIFY = 202059;

	// ********************************
	// 大廳, 02 game lobby
	// 公告、跑馬燈公告 60
	// ********************************

	/**
	 * client 取得公告列表 client->server<br>
	 */
	@MessageClassName(className = "java.lang.Long")
	public static final int C_BULLETIN_LIST = 102060;

	/**
	 * 回覆 client 公告列表 server->client<br>
	 * registerH2oClass(325, com.ms.game.lobby.bulletin.BulletinListInfo.class)
	 * registerH2oClass(326, com.ms.game.lobby.bulletin.BulletinTitleInfo.class)
	 */
	@MessageClassName(className = "com.ms.game.lobby.bulletin.BulletinListInfo")
	public static final int S_BULLETIN_LIST = 202060;
	/**
	 * client 取得公告內容 client->server<br>
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int C_BULLETIN_CONTENT = 102061;

	/**
	 * 回覆 client 公告內容 server->client<br>
	 * registerH2oClass(327, com.ms.game.lobby.bulletin.BulletinInfo.class)
	 */
	@MessageClassName(className = "com.ms.game.lobby.bulletin.BulletinInfo")
	public static final int S_BULLETIN_CONTENT = 202061;

	/**
	 * 取得跑馬燈公告清單<br>
	 * client->server<br>
	 * 登入時要ㄧ次
	 * <p>
	 * (client 已經沒有在使用這個消息編號)
	 */
	@Deprecated
	public static final int C_MARQUEE_LIST = 102062;

	/**
	 * Game 跟 GMTool 要跑馬燈公告清單<br>
	 * server->server<br>
	 * registerH2oClass(2006,com.ms.gane.marquee.MarqueeBulletin.class);
	 */
	@MessageClassName(className = "java.lang.Long")
	public static final int S_GMTOOL_MARQUEE_LIST = 402062;

	/**
	 * 取得強制公告清單<br>
	 * client->server<br>
	 * 登入時要ㄧ次
	 */
	@MessageClassName(className = "")
	public static final int C_FORCIBLY_LIST = 102063;

	/**
	 * 發送強制公告清單<br>
	 * server->client<br>
	 * registerH2oClass(2008,com.ms.game.forciblyBulletin.
	 * ForciblyBulletinContainer.class);
	 */
	@MessageClassName(className = "")
	public static final int S_FORCIBLY_LIST = 202063;

	/**
	 * Game 跟 GMTool 要強制公告清單<br>
	 * server->server<br>
	 * registerH2oClass(2008,com.ms.game.forciblyBulletin.
	 * ForciblyBulletinContainer.class);
	 */
	@MessageClassName(className = "com.xpec.c4.service.group.transportlayer.GroupMessage")
	public static final int S_GMTOOL_FORCIBLY_LIST = 402063;

	/**
	 * 給Client新的公告數量，讓Client可預做紅點<br>
	 * client -> server<br>
	 * long lastModifyTime
	 */
	@MessageClassName(className = "java.lang.Long")
	public static final int C_BULLETIN_GET_NEW_COUNT_REQUEST = 102064;

	
	/**
	 * 	client 要求要停權名單 </br>
	 *  client -> server<br>
	 * 	registerH2oClass(1105,com.ms.game.lobby.terminatedaccountlist.message.CGetTerminatedAccountListRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.lobby.terminatedaccountlist.message.CGetTerminatedAccountListRequest")
	public static final int C_LOBBY_GET_TERMINATED_ACCOUNT_LIST_REQUEST = 102065;
	
	/**
	 * 回應 client 要求要停權名單 </br>
	 * server -> client<br>
	 * registerH2oClass(1106,com.ms.game.lobby.terminatedaccountlist.message.SGetTerminatedAccountListResponse.class);
	 * registerH2oClass(1107,com.ms.game.lobby.terminatedaccountlist.message.TerminatedAccountData.class);
	 */
	@MessageClassName(className = "com.ms.game.lobby.terminatedaccountlist.message.SGetTerminatedAccountListResponse")
	public static final int S_LOBBY_GET_TERMINATED_ACCOUNT_LIST_RESPONSE = 202065;
	
	// ********************************
	// 大廳, 02 game lobby
	// 取座位列表功能 80
	// ********************************

	/**
	 * client->server<br>
	 * client 要求遊戲館的座位列表<br>
	 * registerH2oClass(324,
	 * com.ms.game.lobby.message.CLobbyHallMachinedataRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.CLobbyHallMachinedataRequest")
	public static final int C_LOBBY_HALL_MACHINEDATA_REQUEST = 102080;

	/**
	 * lobby 回覆 client 要求遊戲館的座位列表的結果, 失敗才會傳<br>
	 * server->client<br>
	 * int error code
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int S_LOBBY_HALL_MACHINEDATA_RESPONSE = 202081;

	/**
	 * lobby 轉送 client 要求遊戲館的座位列表給各遊戲 doorman<br>
	 * server->server<br>
	 * registerH2oClass(324,
	 * com.ms.game.lobby.message.CLobbyHallMachinedataRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.lobby.message.CLobbyHallMachinedataRequest")
	public static final int S_LOBBY_DM_HALL_MACHINEDATA_REQUEST = 402082;

	// ********************************
	// 大廳, 02 game lobby
	// 回饋金 100
	// ********************************
	/**
	 * Client 要求查看是否有回饋金可領 client->server
	 * 
	 */
	@MessageClassName(className = "")
	public static final int C_CHECK_HAS_REBATE_REQUEST = 102101;

	/**
	 * 回覆 Client 要求查看是否有回饋金可領 server-> clent
	 * 
	 * @see com.ms.game.rebate.message.SRebateCoinDataMessage
	 * @see com.ms.game.rebate.message.SRebateData registerH2oClass(242,
	 *      com.ms.game.rebate.RebateCoinDataMessage.class);
	 *      registerH2oClass(243, com.ms.game.rebate.SRebateData.class);
	 */
	@MessageClassName(className = "com.ms.game.rebate.message.SRebateCoinDataMessage")
	public static final int S_CHECK_HAS_REBATE_RESPONSE = 202101;

	/**
	 * Client 要求領取抽佣回饋金 client->server
	 * 
	 */
	@MessageClassName(className = "java.lang.Long")
	public static final int C_GET_COMMISON_REBATE_REQUEST = 102102;

	/**
	 * 回覆 Client Client 要求領取抽佣回饋金 server-> client
	 * 
	 * @see com.ms.game.rebate.message.SGetRebateCoinResponse
	 *      registerH2oClass(244,
	 *      com.ms.game.rebate.SGetRebateCoinResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.rebate.message.SGetRebateCoinResponse")
	public static final int S_GET_COMMISON_REBATE_RESPONSE = 202102;

	/**
	 * Client 要求領取包月每日獎勵回饋金 client->server
	 * 
	 */
	@MessageClassName(className = "")
	public static final int C_GET_MONTHLY_DAILY_AWARD_REBATE_REQUEST = 102103;

	/**
	 * 回覆 Client Client 要求領取取包月每日獎勵回饋金 server-> client
	 * 
	 * @see com.ms.game.rebate.message.SGetRebateCoinResponse
	 *      registerH2oClass(244,
	 *      com.ms.game.rebate.SGetRebateCoinResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.rebate.message.SGetRebateCoinResponse")
	public static final int S_GET_MONTHLY_DAILY_AWARD_REBATE_RESPONSE = 202103;

	/**
	 * Client 要求一次領取所有回饋金 client->server
	 * 
	 */
	@MessageClassName(className = "")
	public static final int C_GET_ALL_REBATE_REQUEST = 102104;

	/**
	 * 回覆 Client 一次領取所有回饋金 server-> client
	 * 
	 * @see com.ms.game.rebate.message.SGetRebateCoinResponse
	 *      registerH2oClass(244,
	 *      com.ms.game.rebate.SGetRebateCoinResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.rebate.message.SGetRebateCoinResponse")
	public static final int S_GET_ALL_REBATE_RESPONS = 202104;

	/**
	 * clinet 要求領取上線邀請獎勵 client->server </br>
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int C_GET_UPLINE_INVITE_REWARD_REQUEST = 102105;

	/**
	 * server回覆 client領取上線邀請獎勵 server-> client</br>
	 * 
	 * @see com.ms.game.rebate.message.SGetRebateCoinResponse
	 *      registerH2oClass(244,
	 *      com.ms.game.rebate.SGetRebateCoinResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.rebate.message.SGetRebateCoinResponse")
	public static final int S_GET_UPLINE_INVITE_REWARD_RESPONSE = 202105;

	/**
	 * Client 要求領取包月每日獎勵回饋金 client->server
	 * 
	 */
	@MessageClassName(className = "")
	public static final int C_GET_WEEKLY_DAILY_AWARD_REBATE_REQUEST = 102107;

	/**
	 * 回覆 Client Client 要求領取取包月每日獎勵回饋金 server-> client
	 * 
	 * @see com.ms.game.rebate.message.SGetRebateCoinResponse
	 *      registerH2oClass(244,
	 *      com.ms.game.rebate.SGetRebateCoinResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.rebate.message.SGetRebateCoinResponse")
	public static final int S_GET_WEEKLY_DAILY_AWARD_REBATE_RESPONSE = 202107;

	/**
	 * server 要求修改 修改查看是否有回饋金 時間 server-> client</br>
	 */
	@MessageClassName(className = "")
	public static final int S_REBATE_MODIFY_TIME = 201106;
	
	// ********************************
	// 大廳, 02 game lobby
	// 邀請好友 110
	// ********************************

	/**
	 * client 要求邀請領取邀請碼<br>
	 * client->server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_LOBBY_GET_INVITE_CODE_REQUEST = 102110;

	/**
	 * 回覆 client 要求邀請領取邀請碼的結果<br>
	 * server->client<br>
	 * registerH2oClass(328,
	 * com.ms.game.invitefriend.message.SGetInviteCodeResponse.class);
	 * 	//邀請碼的細項 
	 * registerH2oClass(334, com.ms.game.invitefriend.message.InviteCodeData.class);
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.SGetInviteCodeResponse")
	public static final int S_LOBBY_GET_INVITE_CODE_RESPONSE = 202110;
	
	/**
	 * 角色等級到達50等
	 * 從 PreparedInviteCodeModel 撈出來 放進 InviteCodeModel
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.AddInviteCodeData")
	public static final int S_ADD_INVITE_CODE_TO_PLAYER = 402111;
	
	/**
	 * Client 要求取得經銷商邀請碼<br>
	 * client->server<br>
	 * 
	 */
	@MessageClassName(className = "java.lang.Byte")
	public static final int C_INVITE_CODE_GET_DISTRIBUTOR_INVITE_CODE_REQUEST = 102112;
	
	/**
	 * 回覆 Client 經銷商邀請碼<br>
	 * server->client<br>
	 * registerH2oClass(328, com.ms.game.invitefriend.message.SGetInviteCodeResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.SGetInviteCodeResponse")
	public static final int S_INVITE_CODE_GET_DISTRIBUTOR_INVITE_CODE_RESPONSE = 202112;

	
	/**
	 * Client 要求修改子經銷商的抽傭設定 <br>
	 * client->server<br>
	 * registerH2oClass(336, com.ms.game.invitefriend.message.CModifySubDistributorCommSetting.class);
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.CModifySubDistributorCommSetting")
	public static final int C_INVITE_CODE_MODIFY_DISTRIBUTOR_COMM_SETTING_REQUEST = 102113;
	
	/**
	 * 回覆 Client 要求修改子經銷商的抽傭設定<br>
	 * server->client<br>
	 * registerH2oClass(337, com.ms.game.invitefriend.message.SModifySubDistributorCommSettingResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.SModifySubDistributorCommSettingResponse")
	public static final int S_INVITE_CODE_MODIFY_DISTRIBUTOR_COMM_SETTING_RESPONSE = 202113;
	
	/**
	 * Client 要求取得所有子經銷商的資訊<br>
	 * client->server<br>
	 * registerH2oClass(338, com.ms.game.invitefriend.message.CGetSubDistributorsInfoRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.CGetSubDistributorsInfoRequest")
	public static final int C_INVITE_CODE_GET_SUB_DISTRIBUTOR_INFO_REQUEST = 102114;
	
	/**
	 * 回覆 Client 要求取得所有子經銷商的資訊<br>
	 * server->client<br>
	 * registerH2oClass(339, com.ms.game.invitefriend.message.SGetSubDistributorsInfoResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.SGetSubDistributorsInfoResponse")
	public static final int S_INVITE_CODE_GET_SUB_DISTRIBUTOR_INFO_RESPONSE = 202114;
	
	
	/**
	 * Client 要求取得經銷商所有下線抽傭狀況<br>
	 * client->server<br>
	 * registerH2oClass(341, com.ms.game.invitefriend.message.CGetDownlineCommInfoRequest.class);<br>
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.CGetDownlineCommInfoRequest")
	public static final int C_INVITE_CODE_GET_DOWNLINE_COMM_REQUEST = 102115;
	
	
	/**
	 * 回覆 Client 要求取得經銷商所有下線抽傭狀況<br>
	 * server->client<br>
	 * registerH2oClass(342, com.ms.game.invitefriend.message.SGetDownlineCommInfoResponse.class);<br>
	 * registerH2oClass(343, com.ms.game.invitefriend.message.DownlineCommInfo.class);	<br>
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.SGetDownlineCommInfoResponse")
	public static final int S_INVITE_CODE_GET_DOWNLINE_COMM_RESPONSE = 202115;
	
	/**
	 * 告知 Client 經銷商邀請碼的設定有改變
	 * server->client<br>
	 * registerH2oClass(345,com.ms.game.invitefriend.message.SDistributorSettingNotfiy.class);
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.SDistributorSettingNotfiy")
	public static final int S_INVITE_CODE_DISTRIBUTOR_SETTING_NOTIFY = 202116;
	
	// ********************************
	// 角色資訊模塊,03 basic zone
	// ********************************

	/**
	 * 角色資訊請求<br>
	 * client->server
	 * 
	 * @see com.ms.game.characterInfo.message.CharacterInfoResponse
	 */
	@MessageClassName(className = "")
	public static final int C_GET_CHARACTER_INFO_REQUEST = 103001;

	/**
	 * 角色資訊回覆<br>
	 * server->client
	 * 
	 * @see com.ms.game.characterInfo.message.CharacterInfoResponse
	 */
	@MessageClassName(className = "com.ms.game.characterInfo.message.CharacterInfoResponse")
	public static final int S_GET_CHARACTER_INFO_RESPONSE = 203001;

	/**
	 * 查詢遊戲記錄請求<br>
	 * client->server
	 * 
	 * @see
	 */
	@MessageClassName(className = "com.ms.game.characterInfo.message.CharacterInfoRequest")
	public static final int C_SEARCH_CHARACTER_GAME_INFO_BY_DATE = 103002;
	
	/**
	 * 查詢遊戲記錄回覆<br>
	 * server->client
	 * 
	 * @see
	 */
	@MessageClassName(className = "com.ms.game.characterInfo.message.CharacterInfoResponse")
	public static final int S_SEARCH_CHARACTER_GAME_INFO_BY_DATE = 203002;

	/**
	 * 查詢日常收支紀錄<br>
	 * client->server
	 * 
	 * @see
	 */
	@MessageClassName(className = "com.ms.game.characterInfo.message.DailyExchangeResponse")
	public static final int S_GET_DAILY_EXCHANGE_RESPONSE = 203006;

	/**
	 * client 要求取得使用了自己邀請碼的下線清單<br>
	 * client->server<br>
	 * registerH2oClass(307,
	 * com.ms.game.invitefriend.message.CGetDownLineListRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.CGetDownLineListRequest")
	public static final int C_CHARACTER_INFO_GET_DOWN_LINE_LIST_REQUEST = 103003;

	/**
	 * server 回傳下線清單<br>
	 * server->client<br>
	 * registerH2oClass(308,
	 * com.ms.game.invitefriend.message.SGetDownLineListResponse.class);
	 * registerH2oClass(309,
	 * com.ms.game.invitefriend.message.DownLineInfo.class);
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.SGetDownLineListResponse")
	public static final int S_CHARACTER_INFO_GET_DOWN_LINE_LIST_RESPONSE = 203003;

	/**
	 * client 要求取得下線在各個等級區間累積的抽佣金額<br>
	 * client->server<br>
	 * String (query player guid)
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int C_CHARACTER_INFO_GET_COMMISSION_DETAIL_REQUEST = 103004;

	/**
	 * server 回傳各個等級區間累積的抽佣金額<br>
	 * server->client<br>
	 * registerH2oClass(310,
	 * com.ms.game.invitefriend.message.SGetCommissionDetailResponse.class);<br>
	 * registerH2oClass(311, com.ms.game.invitefriend.message.ComSumInfo.class);
	 */
	@MessageClassName(className = "com.ms.game.invitefriend.message.SGetCommissionDetailResponse")
	public static final int S_CHARACTER_INFO_GET_COMMISSION_DETAIL_RESPONSE = 203004;
	
	/**
	 * client 請求獲得帳號的openID<br>
	 * client->server
	 */
	@MessageClassName(className = "")
	public static final int C_GET_OP_ID_REQUEST = 103005;
	
	/**
	 * server 回覆client帳號的openID<br>
	 * server->client<br>
	 * registerH2oClass(336, com.ms.service.module.zone.message.SOPIDResponse.class);
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.SOPIDResponse")
	public static final int S_GET_OP_ID_RESPONSE = 203005;
	
	/**
	 * client告訴server自己目前的模式<br>
	 * client->server<br>
	 */
	@MessageClassName(className = "java.lang.Boolean")
	public static final int C_CHANGE_DEVICE_FRONT_OR_BACKGROUND_MODE = 103006;
	
	/**
	 * 查詢日常收支紀錄<br>
	 * client->server
	 * 
	 * @see
	 */
	@MessageClassName(className = "com.ms.game.characterInfo.message.DailyExchangeRequest")
	public static final int C_GET_DAILY_EXCHANGE_REQUEST = 103007;
	
	
	/**
	 * Client 要求取得道具類型的遊戲紀錄
	 * registerH2oClass(1101,com.ms.game.characterInfo.message.CGetItemTypeGameRecordRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.characterInfo.message.CGetItemTypeGameRecordRequest")
	public static final int C_SEARCH_ITEM_TYPE_GAME_RECORD_BY_DATE_REQUEST = 103008;
	
	// ********************************
	// DataCenterLite , 04
	// ********************************

	/**
	 * DCLITE 通知機台座位狀態修改<br>
	 * server->client
	 * 
	 * @see registerH2oClass(500, com.ms.service.module.datacenterlite.message.
	 *      SDCLiteNotifySeatStatChangeRequest.class);
	 */
	@MessageClassName(className = "com.ms.service.module.datacenterlite.message.SDCLiteNotifySeatStatChangeRequest")
	public static final int S_DCLITE_NOTIFYSEATSTATCHANGE = 204001;
	
	// ********************************
	// Client Report , 05
	// ********************************
	
	/**
	 * 通知CLIENT是否要送報告
	 * server -> client
	 * registerH2oClass(20001, com.ms.service.module.zone.message.SClientReportRequest.class);
	 */
	@MessageClassName(className = "")
	public static final int S_CLIENT_REPORT_COMMAND = 205001;
	
	/**
	 * CLIENT送報告
	 * 會先判斷該玩家是否被開啟報告
	 * 是則轉給analysis module處理，否則不做任何處理(且客戶端已有可能遭到破解)
	 * client -> server
	 * registerH2oClass(20002, com.ms.service.module.analysis.message.ClientReportData.class);
	 */
	@MessageClassName(className = "com.ms.service.module.analysis.message.ClientReportData")
	public static final int C_CLIENT_REPORT = 105002;
	
	/**
	 * 告訴analysis寫報告
	 * server -> server
	 */
	@MessageClassName(className = "com.ms.service.module.analysis.message.ClientReportData")
	public static final int S_CLIENT_REPORT = 405003;
	

	// ********************************
	// ZONE模塊,11 basic zone
	// ********************************

	/**
	 * client 要求角色登入 zone<br>
	 * client->server
	 * 
	 * @see com.ms.service.module.zone.message.CPlayerLoginZoneRequest
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.CPlayerLoginZoneRequest")
	public static final int C_PLAYER_LOGIN_ZONE_REQUEST = 111001;

	/**
	 * server 回傳 client 要求角色登入 zone 結果<br>
	 * server->client<br>
	 * registerH2oClass(201,com.ms.service.module.zone.message.
	 * SPlayerLoginZoneResult.class);<br>
	 * registerH2oClass(202,com.ms.service.module.zone.message.SSimplePlayer.
	 * class);<br>
	 * registerH2oClass(304,com.ms.game.itembox.ItemField.class);
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.SPlayerLoginZoneResult")
	public static final int S_PLAYER_LOGIN_ZONE_RESULT = 211002;

	/**
	 * 通知Login 玩家logout (or disconnect)<br>
	 * server->server
	 * 
	 * @see com.xpec.c4.message.zone.SPlayerLogoutZone
	 */
	@MessageClassName(className = "")
	public static final int S_PLAYER_LOGOUT_ZONE_MAIN = 411009;

	/**
	 * login与zone之间的登录信息錯誤<br>
	 * Server -> Client<br>
	 * int
	 * 
	 * @see com.xpec.c4.message.zone.LoginZoneError
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int S_LOGIN_ZONE_ERROR = 211006;

	/**
	 * 通知另一個zone我要登入那個zone, 請她把驗證資訊放入<br>
	 * server->server
	 * 
	 * @see com.xpec.c4.game.common.VerifyInfoNotifyMsg
	 */
	@MessageClassName(className = "com.xpec.c4.game.common.VerifyInfoNotifyMsg")
	public static final int S_LOGIN_VERIFYCODE_REQUEST = 411014;

	/**
	 * 回傳驗證結果<br>
	 * server->server
	 * 
	 * @see com.xpec.c4.game.common.VerifyInfoNotifyMsg
	 */
	@MessageClassName(className = "com.xpec.c4.game.common.VerifyInfoNotifyMsg")
	public static final int S_LOGIN_VERIFYCODE_RESPONSE = 411015;

	/**
	 * 廣播給所有的 module 有一條連線斷掉了<br>
	 * netty server->all module
	 * 
	 * @see com.ms.service.module.account.message.SSessionCloseNotify
	 */
	@MessageClassName(className = "com.ms.service.module.account.message.SSessionCloseNotify")
	public static final int S_SESSION_CLOSE_NOTIFY = 411016;

	/**
	 * 通知玩家不過去了的通知<br>
	 * server->server
	 * 
	 * @see com.xpec.c4.game.utility.GUID
	 */
	@MessageClassName(className = "com.xpec.c4.game.utility.GUID")
	public static final int S_ZONE_PLAYER_CANCEL_LOGIN_REQUEST = 411017;

	/**
	 * client登入時, server通知client 多久要發送一次心跳消息<br>
	 * server->client int 標準的週期值 (ms)
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int S_PERIOD_SYNC_INFO = 211018;

	/**
	 * client定期發送心跳消息, 讓server檢查是否使用加速器<br>
	 * client->server long client 的目前時間 (ms)
	 */
	@MessageClassName(className = "")
	public static final int C_PERIOD_SYNC_REQUEST = 111019;

	/**
	 * 回覆 client 心跳消息<br>
	 * server->client long client 在 request 中送來的時間 (ms) 原封不動丟回
	 */
	@MessageClassName(className = "java.lang.Long")
	public static final int S_PERIOD_SYNC_RESPONSE = 211020;

	/**
	 * client 傳送 debug command 給 server<br>
	 * client->server<br>
	 * string 指令字串
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int C_ZONE_DEBUG_COMMAND_REQUEST = 111021;

	/**
	 * 回覆 debug command 的結果給 client<br>
	 * server->client<br>
	 * string server 處理完回覆的字串
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int S_ZONE_DEBUG_COMMAND_RESPONSE = 211022;

	/**
	 * client 要求換 zone<br>
	 * client->server
	 * 
	 * @see com.ms.service.module.zone.message.CPlayerSwitchZoneRequest
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.CPlayerSwitchZoneRequest")
	public static final int C_PLAYER_SWITCH_ZONE_REQUEST = 111023;

	/**
	 * zone 要求換 zone server->server
	 * 
	 * @see com.ms.service.module.zone.message.CPlayerSwitchZoneRequest
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.CPlayerSwitchZoneRequest")
	public static final int S_ZONE_SWITCH_ZONE_REQUEST = 411024;

	/**
	 * zone 回傳切換成功及verifycode訊息給client<br>
	 * server->client
	 * 
	 * @see com.ms.service.module.zone.message.SPlayerSwitchZoneResponse
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.SPlayerSwitchZoneResponse")
	public static final int S_ZONE_SWITCH_VERIFYCODE_RESPONSE = 21125;

	/**
	 * 新zone 回傳verifycode訊息給舊zone<br>
	 * server->server
	 * 
	 * @see com.ms.service.module.zone.message.CPlayerSwitchZoneRequest
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.CPlayerSwitchZoneRequest")
	public static final int S_ZONE_SWITCH_VERIFYCODE_BACK = 411026;

	/**
	 * 傳送更新屬性清單給 client<br>
	 * server->client<br>
	 * registerH2oClass(207,com.ms.player.message.SUpdatePlayerAttribute.class);
	 * <br>
	 * registerH2oClass(208,com.ms.player.UpdateAttribute.class);
	 */
	@MessageClassName(className = "com.ms.player.message.SUpdatePlayerAttribute", h5Enable = false)
	public static final int S_ZONE_UPDATE_PLAYER_ATTRIBUTE = 211028;

	/**
	 * 傳送更新道具清單給 client<br>
	 * server->client<br>
	 * registerH2oClass(220, com.ms.player.message.SUpdatePlayerItem.class);<br>
	 * registerH2oClass(221, com.ms.player.UpdateItem.class);
	 */
	@MessageClassName(className = "com.ms.player.message.SUpdatePlayerItem")
	public static final int S_ZONE_UPDATE_PLAYER_ITEM = 211029;

	/**
	 * client 要求使用道具<br>
	 * client->server<br>
	 * registerH2oClass(222, com.ms.game.itembox.message.CUseItemRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.CUseItemRequest")
	public static final int C_ZONE_USE_ITEM_REQUEST = 111030;

	/**
	 * 傳送使用道具的結果給 client<br>
	 * server->client<br>
	 * int 錯誤代碼
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int S_ZONE_USE_ITEM_RESPONSE = 211031;

	/**
	 * 傳送使用螢幕動畫卡片的通知給目標 client<br>
	 * server->client<br>
	 * registerH2oClass(226,
	 * com.ms.game.itembox.message.SUseAnimationCardNotify.class);
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SUseAnimationCardNotify")
	public static final int S_ZONE_USE_ANIMATION_CARD_NOTIFY = 211032;
	/**
	 * 傳送對某人使用禁言卡的通知給某人所在 zone<br>
	 * server->server<br>
	 * server->client<br>
	 * registerH2oClass(223,
	 * com.ms.game.itembox.message.SUseSilentCardNotify.class);
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SUseSilentCardNotify")
	public static final int S_ZONE_USE_SILENT_CARD_NOTIFY = 411033;

	/**
	 * client 傳送使用全頻卡的要求<br>
	 * client->server<br>
	 * registerH2oClass(224,
	 * com.ms.game.itembox.message.CUseBroadcastCardRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.CUseBroadcastCardRequest")
	public static final int C_ZONE_USE_BROADCAST_CARD_REQUEST = 111034;

	/**
	 * 回傳 client 使用全頻卡結果<br>
	 * server->client<br>
	 * int 錯誤碼
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int S_ZONE_USE_BROADCAST_CARD_RESPONSE = 211035;

	/**
	 * 通知 client 顯示全頻廣播訊息<br>
	 * server->client<br>
	 * registerH2oClass(225,
	 * com.ms.game.itembox.message.SBroadcastMessage.class);
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SBroadcastMessage")
	public static final int S_ZONE_BROADCAST_MESSAGE = 211036;

	/**
	 * 模擬自己登入到指定的 zone<br>
	 * server->server<br>
	 * Player 要登進去的角色資料
	 */
	@MessageClassName(className = "com.ms.player.Player")
	public static final int S_ZONE_FAKE_PLAYER_LOGIN = 411038;

	/**
	 * 發送強制公告給client<br>
	 * server -> client<br>
	 * registerH2oClass(2007,com.ms.game.forciblyBulletin.ForciblyBulletinInfo.
	 * class);
	 */
	@MessageClassName(className = "com.ms.game.forciblyBulletin.ForciblyBulletinInfo")
	public static final int S_ZONE_FORCIBLY_BULLETIN = 211039;

	/**
	 * 玩家開啟儲值頁面，要求取得點數和道具. client->server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_ZONE_OPEN_RECHAREGE_PAGE_REQUEST = 111040;

	/**
	 * 玩家開啟儲值頁面，要求取得點數和道具. server->client<br>
	 * 
	 * @see com.ms.service.module.zone.message.SRechargePageResponse)
	 * @see H2O - 246
	 */

	@MessageClassName(className = "com.ms.service.module.zone.message.SRechargePageResponse")
	public static final int S_ZONE_OPEN_RECHAREGE_PAGE_RESPONSE = 211040;
	/**
	 * 玩家在儲值頁面，要求取得交易明細 client->server<br>
	 * 
	 * @see com.ms.service.module.zone.message.
	 *      CCashGoldTransactionDetailsRequest .class
	 * @see H2O - 247
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.CCashGoldTransactionDetailsRequest")
	public static final int C_ZONE_CASH_GOLD_TRANSACTION_DETAIL_REQUEST = 111041;

	/**
	 * 回覆玩家 要求取得交易明細 server->client<br>
	 * 
	 * @see com.ms.service.module.zone.message.
	 *      SCashGoldTransactionDetailsResponse .class
	 * @see H2O - 248
	 * @see com.ms.service.module.zone.message.SSimpleCashLog.class
	 * @see H2O - 249
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.SCashGoldTransactionDetailsResponse")
	public static final int S_ZONE_CASH_GOLD_TRANSACTION_DETAIL_RESPONSE = 211041;

	/**
	 * SPIN 道具掉落結果至CLIENT server->client<br>
	 * registerH2oClass(230,
	 * com.ms.game.itembox.message.SpinRollItemDataResponse.class);
	 * registerH2oClass(231, com.ms.game.itembox.ItemSimpleData.class);
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SpinRollItemDataResponse")
	public static final int S_SPIN_ROLLITEM_RESPONSE = 211042;

	/**
	 * client 要求取得道具列表<br>
	 * client->server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_ZONE_GET_ITEM_LIST_REQUEST = 111043;

	/**
	 * client 要求取得道具列表的結果<br>
	 * server->client<br>
	 * registerH2oClass(233,
	 * com.ms.game.itembox.message.SZoneGetItemListResult.class);
	 * registerH2oClass(234, com.ms.game.itembox.message.SSimpleItem.class);
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SZoneGetItemListResult")
	public static final int S_ZONE_GET_ITEM_LIST_RESULT = 211044;

	/**
	 * 要求client 修改bank旗標 (用於Server直接更改Db值) server->client<br>
	 */
	@MessageClassName(className = "")
	public static final int S_ZONE_MODIFY_BANK_INFO_FLAG = 211045;

	/**
	 * 小樂要求儲值 要求 server->server<br>
	 */
	@MessageClassName(className = "java.lang.Long")
	public static final int C_ZONE_ROBOT_ADD_CASH_POINT_REQUEST = 111046;

	/**
	 * 小樂要求儲值 回應 server->server<br>
	 * registerH2oClass(330,
	 * com.ms.service.module.zone.message.SRobotAddCashMessage.class);
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.SRobotAddCashMessage")
	public static final int S_ZONE_ROBOT_ADD_CASH_POINT_RESPONSE = 411047;

	/**
	 * 用updateAttribuate更新玩家的暫存資料
	 * 
	 */
	@MessageClassName(className = "com.ms.player.message.SUpdatePlayerZoneDataByAttributeList")
	public static final int S_ZONE_UPDATE_PLAYER_ATTRIBUTE_DATA = 411048;
	
	/**
	 * 小樂要求增加體驗幣<br>
	 * client->server
	 */
	@MessageClassName(className = "")
	public static final int C_ZONE_ROBOT_ADD_TRIAL_COIN_REQUEST = 111049;

	/**
	 * 小樂要求增加體驗幣的結果<br>
	 * server->client
	 */
	@MessageClassName(className = "")
	public static final int S_ZONE_ROBOT_ADD_TRIAL_COIN_RESULT = 211050;
	
	/**
	 * Client 要求打開福袋
	 * String itemSn<br> 
	 * client->server<br> 
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int C_ZONE_GET_ACCOUNT_ITEM_TO_PLAYER_REQUEST = 111053;
	
	/**
	 * 回應Client 要求打開福袋<br> 
	 * registerH2oClass(237, com.ms.game.itembox.message.SGetItemFromAccountItemListResponse.class);<br> 
	 * server->client<br> 
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SGetItemFromAccountItemListResponse")
	public static final int S_ZONE_GET_ACCOUNT_ITEM_TO_PLAYER_RESPONE = 211053;
	
	/**
	 * 跟Clinet 說可以跟Server 要共用背包資料<br> 
	 *  server->client<br> 
	 */
	@MessageClassName(className = "")
	public static final int S_ZONE_CAN_ASK_ACCOUNT_ITEM_LIST = 411054;
	
	/**
	 * Server 回應Client 要求開福袋<br>
	 * registerH2oClass(452, com.ms.game.itembox.message.SBonusPackOpenResponse.class)
	 * server->client<br> 
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SGetItemFromAccountItemListResponse")
	public static final int S_ZONE_OPEN_BONUS_PACK_RESPONSE = 211055;
	
	
	/**
	 * Client 要求使用更名卡<br>
	 * registerH2oClass(455, com.ms.game.itembox.message.CUseChangeNameCardRequest.class)
	 * client -> server<br>
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.CUseChangeNameCardRequest")
	public static final int C_ZONE_USE_CHANGE_NAME_CARD_REQUEST = 111056;
	
	/**
	 * Server 回應Client 要求使用更名卡<br>
	 * registerH2oClass(456, com.ms.game.itembox.message.SUseChangeNameCardResponse.class)
	 * server->client<br> 
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SUseChangeNameCardResponse")
	public static final int S_ZONE_USE_CHANGE_NAME_CARD_RESPONSE = 211056;
	
	
	/**
	 * Client 詢問是否有送東西
	 * 
	 */
	@MessageClassName(className = "")
	public static final int C_ZONE_CHECK_DAILY_SEND_REQUEST = 111057;
	
	/**
	 * 回覆Client 詢問是否有送東西<br>
	 * registerH2oClass(1104,com.ms.service.module.zone.message.DailyLoginSendResponse.class);
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int S_ZONE_CHECK_DAILY_SEND_RESPONSE = 211057;
	
	/**
	 * Client要求要批次換C幣卡
	 */
	@MessageClassName(className = "")
	public static final int C_ZONE_BATCH_CHANGE_GOLD_COIN_CARD_RQUEST = 111058;
	
	
	/**
	 * 回應Client要求要批次換C幣卡<br> 
	 * registerH2oClass(458, com.ms.game.itembox.message.SBatchChangeGoldCoinCardResponse.class);<br> 
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SBatchChangeGoldCoinCardResponse")
	public static final int S_ZONE_BATCH_CHANGE_GOLD_COIN_CARD_RESPONSE = 211058;

	// ********************************
	// 分析統計模块, 14
	// ********************************
	
	/**
	 * 玩家出入機台紀錄<br> 
	 * server->server<br>
	 * registerH2oClass(18001, com.ms.service.module.analysis.message.PlayerEnterSeatData.class);</br>
	 * registerH2oClass(18002, com.ms.service.module.analysis.message.MachineData.class);</br>
	 */
	@MessageClassName(className = "com.ms.service.module.analysis.message.PlayerEnterSeatData")
	public static final int S_ANALYSIS_PLAYER_ENTER_SEAT = 414001;
	
	/**
	 * 玩家下注紀錄<br> 
	 * server->server<br>
	 * registerH2oClass(18003, com.ms.service.module.analysis.message.PlayerBetData.class);
	 */
	@MessageClassName(className = "com.ms.service.module.analysis.message.PlayerBetData")
	public static final int S_ANALYSIS_PLAYER_BET = 414002;
	
	/**
	 * 遊戲收支統計<br>
	 * server->server<br>
	 * registerH2oClass(18004, com.ms.service.module.analysisgroup.message.GameRevenueAndExpenditureData.class);
	 */
	@MessageClassName(className = "com.ms.service.module.analysisgroup.message.SGameRnERequestData")
	public static final int S_ANALYSIS_GAME_REVENUE_AND_EXPENDITURE = 414003;
	
	/**
	 * 玩家收支統計<br>
	 * server->server<br>
	 * registerH2oClass(18005, com.ms.service.module.analysisgroup.message.SPlayerRnERequestData.class);
	 */
	@MessageClassName(className = "com.ms.service.module.analysisgroup.message.SPlayerRnERequestData")
	public static final int S_ANALYSIS_PLAYER_REVENUE_AND_EXPENDITURE = 414004;
	
	/**
	 * C幣支出統計<br>
	 * server->server<br>
	 * registerH2oClass(18006, com.ms.service.module.analysisgroup.message.SCoinExpenditureData.class);
	 */
	@MessageClassName(className = "com.ms.service.module.analysisgroup.message.SCoinExpenditureData")
	public static final int S_ANALYSIS_ADD_COIN_EXPENDITURE = 414005;
	
	/**
	 * 請統計SERVER檢查玩家寄送禮物操作間隔時間<br>
	 * server->server<br>
	 * registerH2oClass(18007, com.ms.service.module.analysisgroup.message.SCheckSendGiftIntervalTimeData.class);
	 */
	@MessageClassName(className = "com.ms.service.module.analysisgroup.message.SCheckSendGiftIntervalTimeData")
	public static final int S_ANALYSIS_CHECK_SEND_GIFT_INTERVAL_TIME = 414006;
	
	/**
	 * 物品變化統計<br>
	 * server->server<br>
	 * registerH2oClass(18008, com.ms.service.module.analysisgroup.message.SItemChangeData.class);
	 */
	@MessageClassName(className = "com.ms.service.module.analysisgroup.message.SItemChangeData")
	public static final int S_ANALYSIS_ITEM_CHANGE = 414007;
	
	/**
	 * 伺服器跟統計詢問及時人數資訊<br>
	 * server->server<br>
	 * registerH2oClass(18009, com.ms.service.module.analysis.message.SRealTimePlayerCountRequest.class);
	 */
	@MessageClassName(className = "com.ms.service.module.analysis.message.SRealTimePlayerCountRequest")
	public static final int S_GET_REALTIME_PLAYER_COUNT_REQUEST = 414008;
	
	/**
	 * 回覆及時人數資訊<br>
	 * server->server<br>
	 * registerH2oClass(18010, com.ms.service.module.analysis.message.SRealTimePlayerCountResponse.class);
	 */
	@MessageClassName(className = "com.ms.service.module.analysis.message.SRealTimePlayerCountResponse")
	public static final int S_GET_REALTIME_PLAYER_COUNT_RESPONSE = 414009;
	
	/**
	 * 樂翻寶抽中物品統計<br>
	 * server->server<br>
	 * 	registerH2oClass(18011, com.ms.service.module.analysisgroup.message.SFnboDrawItemDatas.class);
	 *	registerH2oClass(18012, com.ms.service.module.analysisgroup.message.FnboAnalysisItemData.class);
	 */
	@MessageClassName(className = "com.ms.service.module.analysis.message.SRealTimePlayerCountResponse")
	public static final int S_ANALYSIS_FNBO_DRAW_ITEM_COUNT = 414010;
	
	/**
	 * 使用C幣卡的細節資訊<br>
	 * server->server<br>
	 * registerH2oClass(18013, com.ms.service.module.analysisgroup.message.SUsedCoinCardDetailData.class);
	 */
	@MessageClassName(className = "com.ms.service.module.analysisgroup.message.SUsedCoinCardDetailData")
	public static final int S_ANALYSIS_USED_COIN_CARD_DETAIL = 414011;
	
	/**
	 * 各遊戲排行榜更新<br>
	 * server -> server<br>
	 * registerH2oClass(1507, com.ms.service.module.ranking.message.RankingUpdateData.class);<br>
	 */	
	@MessageClassName(className = "")
	public static final int S_RANKING_UPDATE_TABLES = 415011;

	/**
	 * 各遊戲排行榜更新<br>
	 * server -> server<br>
	 * registerH2oClass(1507, com.ms.service.module.ranking.message.RankingUpdateData.class);<br>
	 */	
	@MessageClassName(className = "")
	public static final int S_RANK_MODIFY_RANK_SETTING = 415012;
	
	
	/**
	 * 廣播活動開始給client<br>
	 * server -> client<br>
	 */
	@MessageClassName(className = "")
	public static final int S_RANK_START_BROADCAST = 215013;
	
	/**
	 * client詢問是否有活動 client->server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_RANK_CHECK_HAS_ACTIVITY = 115014;
	
	
	/**
	 * 回應 client詢問是否有活動 server->client<br>
	 */
	@MessageClassName(className = "")
	public static final int S_RANK_CHECK_HAS_ACTIVITY = 215014;
	
	

	// ********************************
	// 聊天模块, 16 Chat
	// ********************************


	

	

	

	

	

	

	






































	/**
	 * 離線時記錄自創頻道資訊 保留時間過後關閉 server -> server(chat module)<br>
	 * 
	 * @see com.xpec.c4.service.module.common.SPlayerCommonInfo
	 */
	@MessageClassName(className = "com.ms.service.module.common.message.SPlayerCommonInfo")
	public static final int S_CHAT_DISCONNECT_INFO = 416001;

	/**
	 * 獲取全部群組請求<br>
	 * client->server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_GET_ALL_GROUP_LIST = 116027;






	/**
	 * 獲取離線玩家列表請求<br>
	 * server->client<br>
	 */
	@MessageClassName(className = "")
	public static final int C_GET_PRIVATE_CHAT_LIST = 116031;




	/**
	 * 只獲取玩家群組列表不做其他動做請求<br>
	 * client->server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_GET_PLAYER_GROUP_LIST_ONLY = 116033;


	/**
	 * 獲取玩家離線邀請資訊請求<br>
	 * client->server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_GET_PLAYER_INVITE_MESSAGE = 116034;






	/**
	 * 角色暱稱模糊收尋玩家資訊請求<br>
	 * client->server<br>
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int C_SEARCH_PLAYER_LIST = 116038;



	
	/**
	 * 是否啟用超過每秒上限延遲發話檢查
	 * server->client
	 * Boolean
	 */
	@MessageClassName(className = "java.lang.Boolean")
	public static final int S_CHAT_ENABLE_CHECK_OVERFLOW = 416040;
	
	/**
	 * 取得客服的離線訊息<br>
	 * server->client<br>
	 */
	@MessageClassName(className = "")
	public static final int C_GET_CUSTOMER_SERVICE_OFFLINE_MESSAGE = 116041;
	
	
	
	
	
	/**
	 * 聊天測試指令<br>
	 * server->server<br>
	 * 
	 */
	@MessageClassName(className = "")
	public static final int S_CHAT_DEBUG_COMMAND = 416044;

	// ********************************
	// 滿貫大享模块, 17 mgdh
	// ********************************

	/**
	 * Door man取消離線保留資料BACK server->server<br>
	 * 
	 * @see #registerH2oClass(8048,com.ms.game.mgdh.message.
	 *      SDoorManCancelOfflineKeepDataBackRequest.class)
	 */
	@MessageClassName(className = "")
	public static final int S_DOORMAN_CANCEL_OFFLINEKEEPDATA_BACK = 317104;

	/**
	 * Door man取消離線保留資料 server->server<br>
	 * 
	 * @see #registerH2oClass(8049,com.ms.game.mgdh.message.
	 *      SDoorManCancelOfflineKeepDataRequest.class)
	 */
	@MessageClassName(className = "com.ms.game.mgdh.message.SDoorManCancelOfflineKeepDataRequest")
	public static final int S_DOORMAN_CANCEL_OFFLINEKEEPDATA = 317105;

	// ********************************
	// GMTool相關 , 20
	// ********************************

	/**
	 * GMTool 即時線上會員人數<br>
	 * server->server<br>
	 * GMTool Server <-> Game Server
	 */
	@MessageClassName(className = "")
	public static final int S_GMTOOL_ONLINE_NUMBER_REQUEST = 420001;

	/**
	 * GMTool 取得小樂設定<br>
	 * server->server<br>
	 * GMTool Server <-> Game Server
	 * registerH2oClass(2001,com.ms.game.gmtool.RobetRateInfo.class);
	 */
	@MessageClassName(className = "")
	public static final int S_GMTOOL_READ_ROBET_TASK = 420003;

	/**
	 * GMTool 新增or修改白名單 server->server<br>
	 * GMTool Server <-> Game Server
	 * registerH2oClass(2002,com.ms.game.gmtool.WhiteListInfo.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.WhiteListInfo")
	public static final int S_GMTOOL_EDIT_WHITE_LIST = 420004;

	/**
	 * GMTool 更新server公告暫存 server->server<br>
	 * GMTool Server <-> Game Server
	 * registerH2oClass(2003,com.ms.game.lobby.bulletin
	 * .BulletinModelInfo.class);
	 */
	@MessageClassName(className = "com.ms.game.lobby.bulletin.BulletinModelInfo")
	public static final int S_GMTOOL_UPDATE_BULLETIN = 420005;

	/**
	 * GMTool Account更換TCPProxy server->server<br>
	 * GMTool Server <-> Account Server
	 */
	@MessageClassName(className = "")
	public static final int S_GMTOOL_SWITCH_TCP_PROXY = 420006;

	/**
	 * GMTool 請Account回傳當前Proxy IP server->server<br>
	 * GMTool Server <-> Account Server
	 */
	@MessageClassName(className = "")
	public static final int S_GMTOOL_GET_CURRENT_ACCOUNT_SERVER_PROXY_IP = 420007;

	/**
	 * GMTool 通知server 從DB更新公告暫存資料 server->server<br>
	 * GMTool Server <-> Game Server
	 * registerH2oClass(2004,com.ms.game.lobby.bulletin
	 * .BullentinAllListInfo.class);
	 */
	@MessageClassName(className = "com.ms.game.lobby.bulletin.BullentinAllListInfo")
	public static final int S_GMTOOL_UPDATE_SERVER_BULLETIN = 420008;

	/**
	 * GMTool 通知 zone 修改 player 禁止送禮時間和原因 server->server<br>
	 * GMTool Server -> Zone
	 * 
	 */
	@MessageClassName(className = "com.ms.game.gmtool.PlayerDisableData")
	public static final int S_GMTOOL_DISABLE_PLAYER_SEND_GIFT_TIME_REASON = 420010;

	/**
	 * GMTool 通知 zone 修改 player 禁止送禮時間和原因 server->server<br>
	 * GMTool Server -> GameLobbyModule
	 * 
	 */
	@MessageClassName(className = "com.ms.game.gmtool.PlayerDisableData")
	public static final int S_GMTOOL_CHECK_SEND_GIFT_TIME_OUT = 420011;

	/**
	 * gmtool 廣播給所有 module, server 進入關機倒數狀態<br>
	 * server->server<br>
	 * gmtool->all module<br>
	 * registerH2oClass(2010,com.ms.game.gmtool.
	 * SGmtoolServerShutdownCountdownNotify.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.SGmtoolServerShutdownCountdownNotify")
	public static final int S_GMTOOL_SERVER_SHUTDOWN_COUNTDOWN_NOTIFY = 420012;

	/**
	 * gmtool 廣播給所有 module, server 進入踢玩家斷線狀態<br>
	 * server->server<br>
	 * gmtool->all module<br>
	 */
	@MessageClassName(className = "")
	public static final int S_GMTOOL_KICK_ALL_CONNECTION_NOTIFY = 420013;

	/**
	 * gmtool 廣播給所有 client, server 進入關機倒數狀態<br>
	 * server->server<br>
	 * gmtool->all client<br>
	 * registerH2oClass(2011,com.ms.game.gmtool.
	 * SGmtoolServerShutdownCountdownNotifyToClient.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.SGmtoolServerShutdownCountdownNotifyToClient")
	public static final int S_GMTOOL_SERVER_SHUTDOWN_COUNTDOWN_NOTIFY_TO_CLIENT = 220014;

	/**
	 * gmtool - 客服回報系統 server->server<br>
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.GMChatServiceRequest")
	public static final int C_GMTOOL_CHATSERVICE_MSG = 420015;

	/**
	 * gmtool - 客服回報系統FROM GM server->server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_GMTOOL_CHATSERVICE_MSG_GMBACK = 420016;

	/**
	 * GMTOOL 要排行榜資料 server->server<br>
	 * GMTool Server <-> Game Server
	 */
	@MessageClassName(className = "")
	@Deprecated
	public static final int S_GMTOOL_GET_RANKING_TABLE_DATA_REQUEST = 420017;

	/**
	 * gmtool 廣播給所有 module, server 進入禁止交易行為狀態<br>
	 * server->server<br>
	 * gmtool->all module<br>
	 */
	@MessageClassName(className = "")
	public static final int S_GMTOOL_STOP_TRANSACTION_NOTIFY = 420018;

	/**
	 * gmtool 通知 doorman 清除座位保留狀態<br>
	 * server->server<br>
	 * gmtool->game doorman<br>
	 * registerH2oClass(12004,
	 * com.ms.game.slot.base.message.SGmtoolCleanDoormanSeatStatusRequest
	 * .class);
	 */
	// 有兩個類別符合 但是由server -> client/server 所以不被需要 但因符合規格 所以填上一個
	@MessageClassName(className = "com.ms.game.slot.base.message.SGmtoolCleanDoormanSeatStatusRequest")
	public static final int S_GMTOOL_CLEAN_DOORMAN_SEAT_STATUS = 420019;

	/**
	 * doorman 通知 game 清除座位保留狀態<br>
	 * server->server<br>
	 * game doorman->game<br>
	 * registerH2oClass(12003,
	 * com.ms.game.slot.base.message.SGmtoolCleanGameSeatStatusRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SGmtoolCleanGameSeatStatusRequest")
	public static final int S_GMTOOL_CLEAN_GAME_SEAT_STATUS = 420020;

	/**
	 * Gmtool禁止玩家登入 </br>
	 * server->server<br>
	 */
	@MessageClassName(className = "")
	public static final int S_GMTOOL_BAN_ACCOUNT_LOGIN = 420021;

	/**
	 * Gmtool讓玩家禁言 </br>
	 * server->server<br>
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.SBanTimeMessage")
	public static final int S_GMTOOL_BAN_PLAYER_TALK = 420022;

	/**
	 * gmtool 廣播給所有 module, 現在Server的狀態要改變成哪個<br>
	 * server->server<br>
	 * gmtool->all module<br>
	 */
	@MessageClassName(className = "java.lang.Integer")
	public static final int S_GMTOOL_MODIFY_SERVER_STATUS_NOTIFY = 420023;
	
	/**
	 * gmtool 廣播給所有 module, 清除 zone 上 LoginPlayerList 內指定的 guid<br>
	 * server->server<br>
	 * gmtool->all module<br>
	 */
	@MessageClassName(className = "com.xpec.c4.game.utility.GUID")
	public static final int S_GMTOOL_REMOVE_GUID_FROM_ZONE_LOGIN_PLAYER_LIST = 420024;
	
	/**
	 * gmtool 送給玩家所在的module 更新玩家控制項目的暫存
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.SUpdatePlayerSwitchList")
	public static final int S_GMTOOL_UPDATE_PLAYER_SWITCHLIST_REQUEST = 420025;
	
	/**
	 * gmtool 要求ANALYSIS回傳即時玩家列表
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.SGmtoolGetRealTimePlayerListData")
	public static final int S_GMTOOL_GET_REAL_TIME_PLAYER_LIST_IN_GAME = 420026;
	
	/**
	 * gmtool 要求更改C幣支出警示標準設定<br>
	 * server -> server
	 */
	@MessageClassName(className = "")
	public static final int S_GMTOOL_UPDATE_COIN_EXPENDITURE_ALERT_VALUE = 420028;
	
	/**
	 * GMTOOL 要求增加玩家保留座位時間<br>
	 * server->server<br>
	 * registerH2oClass(2017,com.ms.game.gmtool.message.SExtendPlayerKeepSeatTimeRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.SExtendPlayerKeepSeatTimeRequest")
	public static final int S_GMTOOL_EXTEND_PLAYERS_KEEP_SEAT_TIME = 420029;
	
	/**
	 * GMTOOL 通知 DClite 遊戲MODULE改變狀態<br>
	 * server->server<br>
	 * registerH2oClass(2018,com.ms.game.gmtool.message.SGmtoolChangeGameModuleState.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.SGmtoolChangeGameModuleState")
	public static final int S_GMTOOL_CHANGE_GAME_MODULE_STATE_TO_DCLITE = 420030;
	
	/**
	 * GMTOOL 改變排行榜設定<br>
	 * server->server
	 */
	@MessageClassName(className = "")
	public static final int S_GMTOOL_CHANGE_RANK_SETTING = 420032;
	
	/**
	 * GMTOOL 咬幣機制啟動通知<br>
	 * server->server
	 */
	@MessageClassName(className = "")
	public static final int S_GMTOOL_WATERDISAPPEAR = 420033;
	
	/**
	 * 要求gmtool更新暫存的排行榜內容 server -> server
	 */
	@MessageClassName(className = "")
	public static final int S_GMTOOL_UPDATE_RANKDATA = 420034;
	
	// ********************************
	// slot game 共用消息 , 21
	// ********************************
	/**
	 * client 要求取得機台內的角色資訊<br>
	 * client->server<br>
	 * registerH2oClass(12000,com.ms.game.slot.base.message.
	 * SlotBasicDMMessageRequest.class);<br>
	 * need halltype, seatid
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SlotBasicDMMessageRequest")
	public static final int C_SLOT_COMMON_DM_SEAT_PLAYER_INFO_REQUEST = 121001;
	/**
	 * client 要求取得機台內的角色資訊, doorman 轉傳到 game module<br>
	 * server->server<br>
	 * registerH2oClass(12002,com.ms.game.slot.base.message.
	 * SSlotCommonDmSeatPlayerInfoRequest.class);<br>
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SSlotCommonDmSeatPlayerInfoRequest")
	public static final int S_SLOT_COMMON_DM_SEAT_PLAYER_INFO_REQUEST = 421002;

	/**
	 * client 指定要收哪一頁的座位更新資訊<br>
	 * client->server<br>
	 * registerH2oClass(12005, com.ms.game.slot.base.message.CSlotCommonDmSetRecvSeatUpdatePageRequest.class);<br>
	 * need halltype, gamename, page
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.CSlotCommonDmSetRecvSeatUpdatePageRequest")
	public static final int C_SLOT_COMMON_DM_SET_RECV_SEAT_UPDATE_PAGE_REQUEST = 121004;

	/**
	 * client 離線掛機停止清除Option<br>
	 * client->server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_SLOT_COMMON_STOP_AUTO_SPIN_OPTION_REQUEST = 121005;

	// ********************************
	// 道具卡片精煉, 進階 , 25
	// ********************************

	/**
	 * 精煉指定的道具<br>
	 * client -> server<br>
	 * String: 道具序號
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int C_ITEM_REFINE_REQUEST = 125001;

	/**
	 * 精煉指定道具的結果<br>
	 * server -> client<br>
	 * registerH2oClass(235,
	 * com.ms.game.itembox.message.SItemRefineResult.class);
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SItemRefineResult")
	public static final int S_ITEM_REFINE_RESULT = 225002;
	
	/**
	 * Client要求打開共用(帳號)背包
	 * client -> server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_ITEM_GET_ACCOUNT_ITEM_LIST_REQUEST = 125003;
	
	/**
	 * 回覆client要求打開共用(帳號)背包
	 * server -> client<br>
	 * registerH2oClass(236, com.ms.game.itembox.message.SGetAccountItemListResponse.class);
	 * registerH2oClass(234, com.ms.game.itembox.message.SSimpleItem.class);
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SGetAccountItemListResponse")
	public static final int S_ITEM_GET_ACCOUNT_ITEM_LIST_RESPONSE = 225003;
	
	/**
	 * 告訴Client獲得了什麼東西</br>
	 * server -> client </br>
	 * registerH2oClass(454, com.ms.game.itembox.message.SBroadCastGetItems.class);
	 */
	@MessageClassName(className = "com.ms.game.itembox.message.SBroadCastGetItems")
	public static final int S_ITEM_BROADCAST_GET_ITEMS = 225004;
	
	
	// ********************************
	// 付費相關, 26
	// ********************************

	/**
	 * client 要求付費相關項目資料<br>
	 * client -> server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_PURCHASE_DATA_LIST_REQUEST = 126001;

	/**
	 * 回覆 client 要求付費相關項目資料的結果<br>
	 * server -> client<br>
	 * registerH2oClass(1400,com.ms.game.purchase.message.SPurchaseDataListResult.class);
	 * registerH2oClass(1401,com.ms.game.purchase.bin.PurchaseItemInfo.class);
	 */
	@MessageClassName(className = "com.ms.game.purchase.message.SPurchaseDataListResult")
	public static final int S_PURCHASE_DATA_LIST_RESULT = 226002;
	
	/**
	 * client 要求付費相關項目資料(IOS)<br>
	 * client -> server<br>
	 */
	@MessageClassName(className = "")
	public static final int C_PURCHASE_DATA_LIST_REQUEST_IOS = 126003;

	/**
	 * 回覆 client 要求付費相關項目資料的結果(IOS)<br>
	 * server -> client<br>
	 * registerH2oClass(1402,com.ms.game.purchase.message.SPurchaseDataListResult_IOS.class);
	 * registerH2oClass(1403,com.ms.game.purchase.bin.PurchaseItemInfoIOS.class);
	 */
	@MessageClassName(className = "com.ms.game.purchase.message.SPurchaseDataListResult_IOS")
	public static final int S_PURCHASE_DATA_LIST_RESULT_IOS = 226004;

	// ********************************
	// Bank 功能相關 27
	// ********************************

	/**
	 * client要求銀行存款明細 registerH2oClass(331,
	 * com.ms.game.bank.message.CBankBookDetailsRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.bank.message.CBankBookDetailsRequest")
	public static final int C_BANK_GET_BANKBOOK_DETAILS_REQUEST = 102701;

	/**
	 * Server回應Client要求銀行存款明細 registerH2oClass(332,
	 * com.ms.game.bank.message.SBankBookDetailsResponse.class);
	 * registerH2oClass(333, com.ms.game.bank.message.SSimpleBankLog.class);
	 */
	@MessageClassName(className = "com.ms.game.bank.message.SBankBookDetailsResponse")
	public static final int S_BANK_GET_BANKBOOK_DETAILS_RESPONSE = 202701;

	// ********************************
	// 離線掛機結果 28
	// ********************************

	/**
	 * client 要求離線 spin 結果<br>
	 * client -> server
	 */
	@MessageClassName(className = "")
	public static final int C_OFFLINE_SPIN_RESULT_GET_REQUEST = 128001;

	/**
	 * Server 回應 Client 離線 spin 結果<br>
	 * server -> client<br>
	 * registerH2oClass(1700,
	 * com.ms.game.offlineSpin.OfflineSpinResultData.class);<br>
	 * registerH2oClass(1701,
	 * com.ms.game.offlineSpin.message.SOfflineSpinResultGetResult.class);
	 */
	@MessageClassName(className = "com.ms.game.offlineSpin.message.SOfflineSpinResultGetResult")
	public static final int S_OFFLINE_SPIN_RESULT_GET_RESULT = 228002;

	// ********************************
	// 禮包 BONUS PACK - 37
	// ********************************
		
		/**
		 * 更新 禮包 暫存<br>
		 * server -> server<br>
		 */
		@MessageClassName(className = "com.ms.game.gmtool.message.SGmtoolUpdateItemInfos")
		public static final int S_BONUSPACK_UPDATE = 437003;
	
	// ********************************
	// server傳給DC lite,95
	// ********************************

	/**
	 * Module對Data Center lite的請求<br>
	 * server -> server<br>
	 * 
	 * @see com.ms.service.module.datacenterlite.CentralAsyncCommand
	 */
	@MessageClassName(className = "com.ms.service.module.datacenterlite.CentralAsyncCommand")
	public static final int S_CENTRAL_REQUEST = 495001;

	/**
	 * Data Center lite對 Module的回覆<br>
	 * server -> server<br>
	 * 
	 * @see com.ms.service.module.datacenterlite.CentralAsyncCommand
	 */
	@MessageClassName(className = "com.ms.service.module.datacenterlite.CentralAsyncCommand")
	public static final int S_CENTRAL_RESPONSE = 495002;

	// ********************************
	// server管理,96
	// ********************************

	/**
	 * 因為消息會用繼承的所以用marshalling的協議編碼<br>
	 * server->server
	 * 
	 * @see com.ms.service.module.daemon.message.SGatewayStat
	 */
	@MessageClassName(className = "")
	public static final int S_MODULE_STAT = 496002;
	
	/**
	 * 關閉指定的 module<br>
	 * server->server<br>
	 * String moduleName 要關閉的 module 名稱
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int S_MODULE_SHUTDOWN_MODULE = 496003;

	/**
	 * 重啟指定的 module<br>
	 * server->server<br>
	 * String moduleName 要重啟的 module 名稱
	 */
	@MessageClassName(className = "java.lang.String")
	public static final int S_MODULE_RESTART_MODULE = 496004;

	/**
	 * 取得所有的 module 狀態列表<br>
	 * server->server<br>
	 * ArrayList ModuleStatus moduleStatusList
	 */
	@MessageClassName(className = "")
	public static final int S_MODULE_GET_ALL_MODULE_LIST = 496005;

	/**
	 * server->server
	 * 
	 * @see com.ms.service.module.daemon.message.SSetGatewayStatResult
	 */
	@MessageClassName(className = "com.ms.service.module.daemon.message.SSetGatewayStatResult")
	public static final int S_DAEMON_SET_GATEWAY_STAT_RESULT = 496011;

	// ********************************
	// server間數據傳送,97
	// ********************************
	/**
	 * Data Center對Module的回應<br>
	 * server -> server<br>
	 * 
	 * @see com.xpec.c4.service.module.data.DataRequestInfo
	 */
	@MessageClassName(className = "com.xpec.c4.game.datamanager.DataRequestInfo")
	public static final int S_DATA_RESPONSE = 497002;

	/**
	 * 更新 player 基本訊息(guid、session、... 到 common module)<br>
	 * server -> server(common module)<br>
	 * 
	 * @see com.xpec.c4.service.module.common.SPlayerCommonInfo
	 */
	@MessageClassName(className = "com.ms.service.module.common.message.SPlayerCommonInfo")
	public static final int S_PLAYER_COMMON_INFO = 497013;
	
	/**
	 * GMTool 告訴Common要更新新道具箱<br>
	 * server -> server<br>
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.SGmtoolUpdateItemInfos")
	public static final int S_UPDATE_ITEM_BOX = 497014;

	// ********************************
	// server game jackpot base message , 98
	// ********************************

	/**
	 * Game 申請 jackpot鎖定 <br>
	 * server -> server<br>
	 * 
	 * @see com.xpec.c4.service.module.data.SGameJackPotLockResquest
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.SGameJackPotLockResquest")
	public static final int S_GAME_JACKPOT_LOCK = 498001;

	/**
	 * 回覆Game 申請 jackpot鎖定 <br>
	 * server -> server<br>
	 * 
	 * @see com.xpec.c4.service.module.data.DataRequestInfo
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.SGameJackPotLockResponse")
	public static final int S_GAME_JACKPOT_LOCK_BACK = 498002;

	/**
	 * Game 申請 jackpot 解鎖 <br>
	 * server -> server<br>
	 * 
	 * @see com.xpec.c4.service.module.data.SGameJackPotLockResquest
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.SGameJackPotUnLockResquest")
	public static final int S_GAME_JACKPOT_UNLOCK = 498003;

	/**
	 * 回覆Game 申請 jackpot 解鎖 <br>
	 * server -> server<br>
	 * 
	 * @see com.xpec.c4.service.module.data.DataRequestInfo
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.SGameJackPotUnLockResponse")
	public static final int S_GAME_JACKPOT_UNLOCK_BACK = 498004;

	/**
	 * 更新JP moudel game jp money server -> server<br>
	 * registerH2oClass(13001,com.ms.game.jackpot.message.
	 * SGameNotifyJackpotMoney.class);
	 */
	@MessageClassName(className = "com.ms.game.jackpot.message.SGameNotifyJackpotMoney")
	public static final int S_MODIFY_JACKPOT_MONEY = 498005;

	/**
	 * 讀取JP MONEY client->server<br>
	 * registerH2oClass(13000,com.ms.game.jackpot.message.CGetGameJackPotMoney.
	 * class);
	 */
	@MessageClassName(className = "com.ms.game.jackpot.message.CGetGameJackPotMoney")
	public static final int C_GET_GAME_JACKPOT_MONEY = 198006;

	/**
	 * 通知JP BROCAST MODULE 快取JP資料 server -> server<br>
	 * 
	 */
	@MessageClassName(className = "com.ms.game.jackpot.message.SGameJackpotCacheResquest")
	public static final int S_GAME_CACHE_JACKPOT_MONEY = 498007;

	/**
	 * 通知快取己完成 server -> server<br>
	 */
	@MessageClassName(className = "")
	public static final int S_GAME_CACHE_JACKPOT_OK = 498008;

	/**
	 * 讀取JP MONEY BACK server->client<br>
	 * registerH2oClass(13004,com.ms.game.jackpot.message.
	 * SGetGameJackpotMoneyResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.jackpot.message.SGetGameJackpotMoneyResponse")
	public static final int S_GET_JACKPOT_MONEY_BACK = 298009;

	/**
	 * 廣播所有遊戲JP金額 server->client<br>
	 * registerH2oClass(13005,com.ms.game.jackpot.message.
	 * SGameBrocastJackpotMoneyResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.jackpot.message.SGameBrocastJackpotMoneyResponse")
	public static final int S_BROCAST_JACKPOT_MONEY = 298010;

	// ********************************
	// 簡訊邀請,78
	// ********************************

	/**
	 * 寄送邀請碼
	 */
	@MessageClassName(className = "")
	public static final int C_INVITEFREIND_BY_SMS = 178001;

	/**
	 * 寄送邀請碼 - BACK
	 */
	@MessageClassName(className = "")
	public static final int S_INVITEFREIND_BY_SMS_BACK = 278002;

	/**
	 * 通知TOOL寄送邀請碼
	 */
	@MessageClassName(className = "")
	public static final int S_NODIFY_TOOL_SEND_SMS = 378003;

	// ********************************
	// 遊戲記錄回傳給 h5 ,81
	// ********************************
	
	/**
	 * 將遊戲記錄轉送給回傳 module<br>
	 * server -> server<br>
	 * registerH2oClass(600 ,com.ms.service.module.logspout.message.SLogSpoutMessage.class);
	 */
	@MessageClassName(className = "com.ms.service.module.logspout.message.SLogSpoutMessage")
	public static final int S_LOG_SPOUT_REQUEST = 281001;
	
	
	// ********************************
	// H5 暫存錢包 ,82
	// ********************************
	
	/**
	 * 通知 client 暫存錢包有更新<br>
	 * server -> client<br>
	 * registerH2oClass(700 ,com.ms.service.module.zone.message.STmpCashUpdateNotify.class);
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.STmpCashUpdateNotify")
	public static final int S_TMP_CASH_UPDATE_NOTIFY = 282001;
	
	/**
	 * 要求把暫存錢包的錢放到 player 上<br>
	 * client -> server<br>
	 * registerH2oClass(701 ,com.ms.service.module.zone.message.CTmpCashTakeRequest.class);
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.CTmpCashTakeRequest")
	public static final int C_TMP_CASH_TAKE_REQUEST = 182002;

	/**
	 * 把暫存錢包的錢放到 player 上的結果<br>
	 * server -> client<br>
	 * registerH2oClass(702 ,com.ms.service.module.zone.message.STmpCashTakeResult.class);
	 */
	@MessageClassName(className = "com.ms.service.module.zone.message.STmpCashTakeResult")
	public static final int S_TMP_CASH_TAKE_RESULT = 282003;
	
	// ********************************
	// 儲值,87
	// ********************************

	/**
	 * client 要求儲值訂單編號
	 * registerH2oClass(3100,com.ms.game.gmtool.CApplyIAPOrderIDRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.CApplyIAPOrderIDRequest")
	public static final int C_APPLY_IAP_ORDERID = 187001;

	/**
	 * client 儲值驗證
	 * registerH2oClass(3101,com.ms.game.gmtool.CApplyIAPVerifyRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.CApplyIAPVerifyRequest")
	public static final int C_VERIFY_IAP_DATA = 187002;

	/**
	 * client 要求儲值訂單編號 - 回覆
	 * registerH2oClass(3102,com.ms.game.gmtool.SApplyIAPOrderIDResponse.class);
	 */
	@MessageClassName(className = "")
	public static final int S_APPLY_IAP_ORDERID = 287003;

	/**
	 * client 儲值驗證- 回覆
	 * registerH2oClass(3103,com.ms.game.gmtool.SApplyIAPVerifyResponse.class);
	 */
	@MessageClassName(className = "")
	public static final int S_VERIFY_IAP_DATA = 287004;

	/**
	 * game Server 跟GMTOOL 要求儲值訂單編號
	 * registerH2oClass(3100,com.ms.game.gmtool.CApplyIAPOrderIDRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.CApplyIAPOrderIDRequest")
	public static final int S_APPLY_IAP_ORDERID_GMTOOL = 487005;

	/**
	 * game Server 跟GMTOOL 要求要 儲值驗證
	 * registerH2oClass(3101,com.ms.game.gmtool.CApplyIAPVerifyRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.CApplyIAPVerifyRequest")
	public static final int S_VERIFY_IAP_DATA_GMTOOL = 487006;

	/**
	 * clinet 儲值完 要求給點數
	 * registerH2oClass(3100,com.ms.game.gmtool.CApplyIAPOrderIDRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.CApplyIAPVerifyRequest")
	public static final int C_ASK_GIVE_IAP_CASH = 187007;

	/**
	 * clinet 儲值完 要求給點數 回覆
	 * registerH2oClass(3101,com.ms.game.gmtool.CApplyIAPVerifyRequest.class);
	 */
	@MessageClassName(className = "")
	public static final int S_ASK_GIVE_IAP_CASH = 287008;

	/**
	 * game Server 跟GMTOOL 要求給Client點數
	 * registerH2oClass(3100,com.ms.game.gmtool.CApplyIAPOrderIDRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.CApplyIAPVerifyRequest")
	public static final int S_ASK_GIVE_IAP_CASH_GMTOOL = 487009;
	
	/**
	 * client 在 apple 儲值玩要求驗證
	 * registerH2oClass(3104,com.ms.game.gmtool.message.CAppleIapVerifyRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.CAppleIapVerifyRequest")
	public static final int C_APPLE_IAP_VERIFY = 187010;
	
	/**
	 * 回覆 client 在 apple 儲值玩要求驗證
	 * registerH2oClass(3105,com.ms.game.gmtool.message.SAppleIapVerifyRsponse.class);
	 */
	@MessageClassName(className = "")
	public static final int S_APPLE_IAP_VERIFY = 287010;
	
	/**
	 * 轉傳 client 在 apple 儲值玩要求驗證
	 * registerH2oClass(3104,com.ms.game.gmtool.message.CAppleIapVerifyRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.CAppleIapVerifyRequest")
	public static final int S_APPLE_IAP_VERIFY_GMTOOL = 487010;
	
	/**
	 * client 在驗證玩後要求給錢
	 * registerH2oClass(3106,com.ms.game.gmtool.message.CAppleIapAskCashRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.CAppleIapAskCashRequest")
	public static final int C_APPLE_IAP_ASK_CASH = 187011;
	
	/**
	 * client 在驗證玩後要求給錢
	 * registerH2oClass(3107,com.ms.game.gmtool.message.SApplyIAPVerifyResponse.class);
	 */
	@MessageClassName(className = "")
	public static final int S_APPLE_IAP_ASK_CASH = 287011;
	
	/**
	 * 轉傳 client 在驗證玩後要求給錢
	 * registerH2oClass(3106,com.ms.game.gmtool.message.CAppleIapAskCashRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.gmtool.message.CAppleIapAskCashRequest")
	public static final int S_APPLE_IAP_ASK_CASH_GMTOOL = 487011;

	// ********************************
	// server傳給DC,99
	// ********************************

	/**
	 * 建立
	 */
	@MessageClassName(className = "com.xpec.c4.game.datamanager.DataRequestInfo")
	public final static int CREATE_PLAYER_INFO = 499100;

	/**
	 * 查找
	 */
	@MessageClassName(className = "com.xpec.c4.game.datamanager.DataRequestInfo")
	public final static int QUERY_PLAYER_INFO_BY_GUID = 499101;

	/**
	 * 修改
	 */
	@MessageClassName(className = "com.xpec.c4.game.datamanager.DataRequestInfo")
	public final static int UPDATE_PLAYER_INFO = 499102;

	/**
	 * 釋放
	 */
	@MessageClassName(className = "")
	public final static int RELEASE_PLAYER_INFO_BY_GUID = 499103;

	/**
	 * 刪除
	 */
	@MessageClassName(className = "")
	public final static int DELETE_PLAYER_INFO_BY_GUID = 499104;

	/**
	 * 改變所有者
	 */
	@MessageClassName(className = "")
	public final static int CHANGE_PLAYER_INFO_OWNER_BY_GUID = 499105;

	/**
	 * 登入使用的角色列表
	 */
	@MessageClassName(className = "com.xpec.c4.game.datamanager.DataRequestInfo")
	public final static int GET_PLAYER_LIST_BY_GUID = 499106;

	/**
	 * 變更玩家金錢
	 */
	@MessageClassName(className = "com.xpec.c4.game.datamanager.DataRequestInfo")
	public final static int UPDATE_PLAYER_MONEY = 499107;

	/**
	 * 變更玩家金錢
	 */
	@MessageClassName(className = "com.xpec.c4.game.datamanager.DataRequestInfo")
	public final static int UPDATE_PLAYER_ITEM = 499108;

	/**
	 * 變更玩家金錢和道具
	 */
	@MessageClassName(className = "com.xpec.c4.game.datamanager.DataRequestInfo")
	public final static int UPDATE_PLAYER_MONEY_ITEM = 499109;

	/**
	 * 
	 */
	// public final static int QUERY_PLAYER_INFO_BY_GUID_RESPONSE = 101;

	/**
	 * 建立
	 */
	@MessageClassName(className = "com.xpec.c4.game.datamanager.DataRequestInfo")
	public final static int CREATE_ACCOUNT_INFO = 499110;

	/**
	 * 查找
	 */
	@MessageClassName(className = "com.xpec.c4.game.datamanager.DataRequestInfo")
	public final static int QUERY_ACCOUNT_INFO = 499111;

	/**
	 * 修改
	 */
	@MessageClassName(className = "com.xpec.c4.game.datamanager.DataRequestInfo")
	public final static int UPDATE_ACCOUNT_INFO = 499112;

	/**
	 * 釋放
	 */
	@MessageClassName(className = "")
	public final static int RELEASE_ACCOUNT_INFO = 499113;

	/**
	 * 改變所有者
	 */
	@MessageClassName(className = "")
	public final static int CHANGE_ACCOUNT_INFO_OWNER = 499114;

	/**
	 * 建立玩家社群資料
	 */
	@MessageClassName(className = "")
	public final static int CREATE_SOCIAL_DATA = 499130;

	/**
	 * 取得玩家社群資料
	 */
	@MessageClassName(className = "")
	public final static int QUERY_SOCIAL_DATA = 499131;

	/**
	 * 更新玩家社群資料
	 */
	@MessageClassName(className = "")
	public final static int UPDATE_SOCIAL_DATA = 499132;

	/**
	 * 釋放玩家社群資料
	 */
	@MessageClassName(className = "")
	public final static int RELEASE_SOCIAL_DATA = 499133;

	/**
	 * 建立琥珀資料
	 */
	@MessageClassName(className = "")
	public final static int CREATE_AMBER_DATA = 499140;

	/**
	 * 取得琥珀資料
	 */
	@MessageClassName(className = "")
	public final static int QUERY_AMBER_DATA = 499141;

	/**
	 * 刪除琥珀資料
	 */
	@MessageClassName(className = "")
	public final static int DELETE_AMBER_DATA = 499142;

	/**
	 * 取得玩家社群資料(會馬上回傳值的同步模式)
	 */
	@MessageClassName(className = "")
	public final static int QUERY_SOCIAL_DATA_WITH_RETURN_DATA = 499143;

	/**
	 * 查找
	 */
	@MessageClassName(className = "")
	public final static int QUERY_PLAYER_SIMPLE_INFO_BY_GUID_WITH_RETURN_DATA = 499144;
	
	
	// ********************************
	// server slot 共用消息 100
	// ********************************
	
	/**
	 * dm 玩家入座
	 * registerH2oClass(16011,	com.ms.game.slot.base.message.SDMDoSeatRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SDMDoSeatRequest")
	public final static int C_SLOT_DM_DOSEAT = 1100001;
	
	/**
	 * dm 玩家入座 BACK
	 * registerH2oClass(17011,	com.ms.service.module.kowc.message.SDMKOWCDoSeatResponse.class);
	 */
	@MessageClassName(className = "")
	public final static int S_SLOT_DM_DOSEAT_BACK =  2100002;
	
	/**
	 * 玩家入座GAME SERVER VERIFY 
	 * registerH2oClass(16001,com.ms.game.slot.base.message.SlotGameDoSeatVerifyRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SlotGameDoSeatVerifyRequest")
	public final static int C_SLOT_DOSEAT_VERIFY = 1100006;
	
	/**
	 * 由dm 同步座位資料至 game server
	 * registerH2oClass(16002,com.ms.game.slot.base.message.SlotGameAsyncDoSeatDataRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SlotGameAsyncDoSeatDataRequest")
	public final static int S_SLOT_ASYNC_DOSEATDATA = 3100007;
	
	/**
	 * 由dm 離座後回呼 game server
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SlotBasicDMMessageRequest")
	public final static int S_SLOT_LEAVEBACK = 4100008;
	
	/**
	 * 入座驗證過期呼叫
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SDMVerifyExpriedTableUserRequest")
	public final static int S_SLOT_VERIFYEXPRIED = 4100009;
	
	/**
	 * 玩家入座GAME SERVER VERIFY  BACK
	 * registerH2oClass(16003,com.ms.game.slot.base.message.SlotGameDoSeatVerifyResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SlotGameDoSeatVerifyResponse")
	public final static int S_SLOT_DOSEAT_VERIFY_BACK = 2100010;
	
	/**
	 * 回傳歷史記錄
	 */
	//public final static int S_SLOT_HISTORY_DATA_BACK = 2100011;
	
	/**
	 * DM 修改座位狀態
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SlotBasicDMMessageRequest")
	public final static int S_SLOT_DM_SEATSTAT_CHANGE = 2100012;
	
	/**
	 * GAME 離開座位
	 * registerH2oClass(16005,com.ms.game.slot.base.message.SlotGameLeaveRequest.class);
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SlotGameLeaveRequest")
	public final static int C_SLOT_GAMELEAVE = 2100013; 
	
	/**
	 * GAME 離開座位 BACK
	 * registerH2oClass(16006,com.ms.game.slot.base.message.SlotGameLeaveResponse.class);
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SlotGameLeaveResponse")
	public final static int S_SLOT_GAMELEAVEBACK = 2100014;
	
	/**
	 * 廣播跑馬燈
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.SlotBasicGameMessageRequest")
	public final static int C_SLOT_MARQUEEPOST = 1100015;
	
	/**
	 * 入桌同步驗證請求
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.STableGameAsynDoSeatDataRequest")
	public final static int S_SLOT_ASYNC_DOSEATDATA_BYTABLE = 3100016;

	/**
	 * client 要求使用非一般的機台卡<br>
	 * client->server<br>
	 * registerH2oClass(12006, com.ms.game.slot.base.message.CSlotCommonUseGameCardRequest.class);</br>
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.CSlotCommonUseGameCardRequest")
	public static final int C_SLOT_COMMON_USE_GAME_CARD_REQUEST = 1100018;
	
	/**
	 * 回應 client 要求使用非一般的機台卡<br>
	 * client->server<br>
	 * registerH2oClass(12007, com.ms.game.slot.base.message.SSlotCommonUseGameCardResponse.class);</br>
	 */
	@MessageClassName(className = "com.ms.game.slot.base.message.CSlotCommonUseGameCardRequest")
	public static final int S_SLOT_COMMON_USE_GAME_CARD_RESPONSE = 2100018;
	
	/**
	 * H5 手動斷線
	 */
	@MessageClassName(className = "")
	public static final int C_H5_DISCONNECTION = 8888888;
	
	/**
	 * H5 連線啟動提醒
	 */
	@MessageClassName(className = "")
	public static final int C_H5_CONNECTION = 9999999;
	
	// ********************************
	// 百家樂 BACR - 30
	// ********************************

	/**
	 * 入桌後的初始資料<br>
	 * server->client<br>
	 * registerH2oClass(2203, com.ms.service.module.baccarat.message.SBacrInitData.class);<br>
	 * registerH2oClass(2200, com.ms.service.module.baccarat.BacrBetInfo.class);<br>
	 * registerH2oClass(2201, com.ms.service.module.baccarat.BacrGameResult.class);<br>
	 * registerH2oClass(2202, com.ms.service.module.baccarat.BacrCard.class);<br>
	 * registerH2oClass(2222, com.ms.service.module.baccarat.bin.BacrTableSettingInfo.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrInitData")
	public static final int S_BACR_INIT_DATA = 230001;
	
	/**
	 * 洗牌階段的初始資料<br>
	 * server->client<br>
	 * registerH2oClass(2213, com.ms.service.module.baccarat.message.BacrStepStartMsgBase.class);<br>
	 * registerH2oClass(2214, com.ms.service.module.baccarat.message.SBacrShuffleStart.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrShuffleStart")
	public static final int S_BACR_SHUFFLE_START = 230002;

	/**
	 * 銷牌階段的初始資料<br>
	 * server->client<br>
	 * registerH2oClass(2204, com.ms.service.module.baccarat.message.SBacrDiscardStart.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrDiscardStart")
	public static final int S_BACR_DISCARD_START = 230003;

	/**
	 * 押注階段的初始資料<br>
	 * server->client<br>
	 * registerH2oClass(2205, com.ms.service.module.baccarat.message.SBacrPlayerBetStart.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrPlayerBetStart")
	public static final int S_BACR_PLAYER_BET_START = 230004;

	/**
	 * 玩家押注要求<br>
	 * client->server<br>
	 * registerH2oClass(2206, com.ms.service.module.baccarat.message.CBacrPlayerBetRequest.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.CBacrPlayerBetRequest")
	public static final int C_BACR_PLAYER_BET_REQUEST = 130005;

	/**
	 * 玩家押注結果<br>
	 * server->client<br>
	 * registerH2oClass(2207, com.ms.service.module.baccarat.message.SBacrPlayerBetResult.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrPlayerBetResult")
	public static final int S_BACR_PLAYER_BET_RESULT = 230006;

	/**
	 * 有人押注後廣播給所有人的押注資訊<br>
	 * server->client<br>
	 * registerH2oClass(2208, com.ms.service.module.baccarat.message.SBacrBroadcastPlayerBetInfo.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrBroadcastPlayerBetInfo")
	public static final int S_BACR_BROADCAST_PLAYER_BET_INFO = 230007;

	/**
	 * 發牌階段的初始資料<br>
	 * server->client<br>
	 * registerH2oClass(2209, com.ms.service.module.baccarat.message.SBacrDealtStart.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrDealtStart")
	public static final int S_BACR_DEALT_START = 230008;

	/**
	 * 開牌階段的初始資料<br>
	 * server->client<br>
	 * registerH2oClass(2210, com.ms.service.module.baccarat.message.SBacrOpenCardStart.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrOpenCardStart")
	public static final int S_BACR_OPEN_CARD_START = 230009;

	/**
	 * 博牌階段的初始資料<br>
	 * server->client<br>
	 * registerH2oClass(2211, com.ms.service.module.baccarat.message.SBacrHitsStart.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrHitsStart")
	public static final int S_BACR_HITS_START = 230010;

	/**
	 * 結算階段的初始資料<br>
	 * server->client<br>
	 * registerH2oClass(2212, com.ms.service.module.baccarat.message.SBacrCalculateScoreStart.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrCalculateScoreStart")
	public static final int S_BACR_CALCULATE_SCORE_START = 230011;

	/**
	 * doorman 通知所有 game module 牌桌資料 model 已經準備好<br>
	 * server->server<br>
	 */
	@MessageClassName(className = "")
	public static final int S_BACR_DOORMAN_MACHINE_MODEL_READY = 430012;

	/**
	 * GAME 通知 DM 修改桌內容
	 * server->server<br>
	 * registerH2oClass(2216, com.ms.service.module.baccarat.message.SBacrDoormanAsyncHistoryData.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrDoormanAsyncHistoryData")
	public static final int S_BACR_DOORMAN_ASYNC_HISTORYDATA = 330013;
	
	/**
	 * 入桌回傳
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrDoSeatResponse")
	public static final int S_BACR_DOORMAN_DOSEAT_BACK = 230014;
	
	/**
	 * 桌資訊更新<br>
	 * server->client<br>
	 * registerH2oClass(2223, com.ms.service.module.baccarat.message.BacrSeatUpdateInfo.class);
	 * registerH2oClass(2252, com.ms.service.module.baccarat.message.SBacrTableUpdateResponse.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrTableUpdateResponse")
	public static final int S_BACR_DOORMAN_TABLEINFO_UPDATE = 230015;
	
	/**
	 * 桌列表
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBarcHallListResponse")
	public static final int S_BACR_DOORMAN_TABLE_LIST = 230016;
	
	/**
	 * GAME 入桌驗證
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrDoSeatVerify")
	public static final int S_BACR_DOSEATVERIFY = 230017;
	
	/**
	 * game 通知機器人押注<br>
	 * server->server<br>
	 * registerH2oClass(2215, com.ms.service.module.baccarat.message.SBacrRobotBetRequest.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrRobotBetRequest")
	public static final int S_BACR_ROBOT_BET_REQUEST = 430018;

	/**
	 * 廣播牌桌勝負資訊更新<br>
	 * server->client<br>
	 * registerH2oClass(2217, com.ms.service.module.baccarat.message.SBacrDoormanTableGameResultUpdate.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrDoormanTableGameResultUpdate")
	public static final int S_BACR_DOORMAN_TABLE_GAME_RESULT_UPDATE = 230019;

	/**
	 * 通知所有百家樂 module 開始進行遊戲<br>
	 * server->server<br>
	 * long 啟動前的等待時間
	 */
	@MessageClassName(className = "java.lang.Long")
	public static final int S_BACR_START_GAME_NOTIFY = 430020;
	
	/**
	 * 啟動倒數階段的初始資料<br>
	 * server->client<br>
	 * registerH2oClass(2218, com.ms.service.module.baccarat.message.SBacrWaitToStart.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrWaitToStart")
	public static final int S_BACR_WAIT_TO_START = 230021;
	
	/**
	 * 還沒開始啟動倒數的階段初始資料<br>
	 * server->client<br>
	 * registerH2oClass(2219, com.ms.service.module.baccarat.message.SBacrIdleStart.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrIdleStart")
	public static final int S_BACR_IDLE_START = 230022;
	
	/**
	 * 送活動連勝資訊更新<br>
	 * server->client<br>
	 * registerH2oClass(2220, com.ms.service.module.baccarat.message.SBacrActivityCombosData.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.message.SBacrActivityCombosData")
	public static final int S_BACR_UPDATE_ACTIVITY_COMBOS = 230023;
	
	/**
	 * gmtool 要求更改百家樂活動連勝設定<br>
	 * server -> server<br>
	 * registerH2oClass(2221, com.ms.service.module.baccarat.db.BacrActivityCombosInfoModel.class);
	 */
	@MessageClassName(className = "com.ms.service.module.baccarat.db.BacrActivityCombosInfoModel")
	public static final int S_GMTOOL_SET_BACR_ACTIVITY_COMBOS_INFO = 420027;
	
	
	// ********************************
	// 捕鱼 FISH - 31
	// ********************************
	public static final int C_FISH_ACTION_DISPATCH = 131001; // 捕鱼自定义协议接受client中转消息
	public static final int S_FISH_ACTION_DISPATCH = 231001; // 捕鱼自定义协议响应client消息
	
	
}
